在C语言中,有一个神奇的符号,也就是*号。是的,这是一个非常神奇的符号,神奇到有时候我都想骂街了,为什么C语言发明者要用*这个星号来同时表示乘法运算和指针定义呢?既然C语言就是这么发明了,我们也只能这么接受了。星号*在指针上的使用,你记住两点就行了。

第一点,星号*可以用在指针定义的时候;第二点,星号*可以用在指针使用的时候。先说第一点。定义指针的时候,你怎么告诉编译器这是一个指针变量,而不是一个普通的整型变量呢?你说,在不适用星号的情况下,你怎么告诉编译器?你肯定没办法告诉编译器啊,你想让编译器知道这是一个指针变量肯定要给这个指针变量加个什么修饰词吧!很不幸,指针的修饰词就是星号*。

也就是说,定义指针变量p的时候,前面加个星号*没有别的意思,就是告诉编译器,这是一个指针变量,就是告诉其他阅读程序员这是一个指针变量。除此以外,真的没有别的意思了。所以在定义指针的时候,前面就加个星号就得了,别去管为什么了,就像你会去管为什么1加1等于2吗?再说第二点。

使用指针的时候,你怎么得到指针指向的那个值呢?你说你直接写“p”这种形式就想得到指针变量p指向的那个值?太天真了。“p”这种形式得到的是那个值得地址,不是那个值本身的数据。那咋办,跟定义指针一样,给指针变量p前面也加个修饰词呗,以此来表示得到指针变量p指向的那个值,而不是指针变量p自己的值。

再一次的很不幸,这个修饰词又是星号*!我说C语言发明的人啊,就不能换一个其他的符号吗?你说定义指针的时候使用星号*,这次使用指针的时候又使用星号*,会很容易把人搞晕的哟!我在“C语言编程技术分享”,这个公众号里写了一些C语言基础文章,欢迎阅读参考!#####通常定义指针时,星号都是写在紧贴变量的左边,可以把这个星号写在紧贴类型右边,这样理解起来可能更深刻一点,譬如int* p这表示p是一个int*类型的变量,也就是经常说的指向int类型的指针变量,之后只进行指针赋值或移动操作时就不需要使用星号了,而要获得指针指向的地址所对应的值时,需使用星号解引用#####int *p的意思是定义了一个变量p,这个p的类型是一个int型指针,也就是(int*)。

int *p = &a(初始化操作)相当于int *p;p=&a;(赋值操作)#####这个p要更深刻的理解他的含义,它的内存分配地址是随机的,而它指向的却是固定地址,这个固定地址是指指向的变量的地址,这个地址必须是固定的,哪怕是编译器随机分配的,但对它来说也是固定的,这就是他的含义。

#####*号紧挨着p,表示p是一个指针类型的变量,p指向的地址里面存放的int类型的数据。#####简单点说,p是变量名,*代表这个变量是指针类型,int表示这个指针指向的是整型,初学者了解这个就够了,别被那些长篇大论吓到了。

全部

c语言程序中*p代表什么,C语言声明指针的时候int*p到底是什么意思? 爱问知识人...相关推荐

  1. 转发 -- C 语言声明指针的时候 int *p 到底是什么意思?

    C 语言声明指针的时候 int *p 到底是什么意思? https://www.zhihu.com/question/32196190 Mayne解释很不错,谢谢分享,转载如下 Mayne what ...

  2. c语言程序中的基本功能,c语言程序中的基本功能模块为什么?

    c语言程序中的基本功能模块为"函数".一个C语言程序可以由一个主函数和若干个函数构成:一个大的应用程序一般应该分为多个程序模块,每一个模块用来实现一个功能,而模块的功能是由函数完成 ...

  3. c语言程序中cost的作用,C语言考试题基础版(21页)-原创力文档

    if (x>y)z=x; s=z*z;elsez=y;s=1/(z*z); if (x>y) z=x; s=z*z; else z=y;s=1/(z*z); 7. B. C. PAd, P ...

  4. c语言程序中的if-else语句,C语言if else语句

    C语言中,使用 if和 else关键字对条件进行判断.请先看下面的代码: #include int main(){    int age;    printf("请输入你的年龄:" ...

  5. 在c语言程序中 感叹号是什么,c语言中(感叹号!)是什么意思?

    !表示逻辑非,是逻辑运算符,运算对象是真或假. 若表示a不等于0,就写成a!=0:假设a等于1,那a!=0:就是真的,true. C语言中的符号分为10类:算术运算符.关系运算符.逻辑运算符.位操作运 ...

  6. C语言程序中紧急情况,《C语言及程序设计》实践参考——紧急救援

    <C语言及程序设计>实践参考--紧急救援 <C语言及程序设计>实践参考--紧急救援 返回:贺老师课程教学链接 [项目7-紧急救援] 洪水突降,人们被困在各个屋顶上.如图所示: ...

  7. 在c语言程序中播放音乐,在C语言控制台程序中播放MP3音乐

    游戏没有声音多单调. 这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,先看看代码吧:// 编译该范例前,请把 background.mp3 放在项目文件夹中 // ...

  8. 关于c语言程序的重点问题,c语言程序设计题跪求高人的复杂版~慢步不要紧主要是要对~题目:作? 爱问知识人...

    呵呵,就完了,晚上就给你答案哈,你多等等~~~ 恩,完工了,你看看吧: //注:本程序因涉及到引用即"&",所以得保存为.cpp的后缀名再用c 编译器进行编译 #inclu ...

  9. 电脑计算机软件硬盘不足,磁盘空间不足-电脑在运行程序的时候,总是要弹出磁盘空间不足,是什么原因造成磁盘? 爱问知识人...

    造成磁盘空间不足存在的原因有多种,可能是当年病毒的原因造成大的磁盘空间不足,可能是磁盘的存储空间满了,造成的磁盘空间不足,还有可能就是系统的原因造成的磁盘空间不足,那么我们应该怎样解决磁盘空间不足的问 ...

最新文章

  1. 无人值守u盘安装linux,从U盘无人值守安装linux操作系统(纯实践笔记)
  2. secureCRT The remote system refused the connection. .
  3. Leetcode 106. 从中序与后序遍历序列构造二叉树 解题思路及C++实现
  4. SRS性能、内存优化工具用法
  5. 异质性查询需要为连线设定_振奋人心!华东理工大学开发新型的荧光染料,为细胞成像奠定基础...
  6. 人工智能ai 学习_学习代理| 人工智能
  7. ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”
  8. JS动态赋值同时触发onchange方法
  9. 角速度求积分能得到欧拉角吗_高中物理竞赛典型例题精讲——中垂平面内电荷圆周运动角速度...
  10. cad渐开线齿轮轮廓绘制_CAD画齿轮的渐开线程序 (lsp)和渐开线齿轮关系
  11. 光感是什么_华强北airpods2洛达1536U-001到底升级了什么?
  12. 服务器软件是否支持双机热备,服务器双机热备建议方案.doc
  13. 2017 4月26日上午
  14. 多任务学习-Multitask Learning概述
  15. 关于java的http请求的工具类
  16. 邮箱登录入口官网是哪个?域名邮箱登录入口展示
  17. 双人联机五子棋html代码,双人联机聊天或五子棋游戏设计【高手请进】
  18. 深耕一线14年,见证云计算风起云涌
  19. 印象笔记html标签删除吗,我用了9年印象笔记,打算彻底放弃,直到……
  20. mybatis-plus使用注意事项

热门文章

  1. C语言人机大战之决战三子棋之巅
  2. 5G/NR 物理资源概要
  3. jenkins-配置python
  4. 小白兔快开门,我是你爸爸。WEB安全基础入门—访问控制漏洞和权限提升
  5. Typecho主题Brave—勇敢爱
  6. 【PyG】图神经网络GAT代码自学
  7. java程序设计心得_学习Java编程的学习方法总结
  8. Spell 基于最长公共子序列的在线日志解析方法
  9. ORA-00604: error occurred at recursive SQL level 1 ...——oracle服务空间不足
  10. 【批处理DOS-CMD命令-汇总和小结】-跳转、循环、条件命令(goto、errorlevel、if、for[读取、切分、提取字符串]、)cmd命令错误汇总,cmd错误