中易网

c语言中指针前面的星号,什么时候可以省去,什么时候又必须带上呢?

答案:5  悬赏:50  
解决时间 2021-02-13 07:51
c语言中指针前面的星号,什么时候可以省去,什么时候又必须带上呢?
最佳答案
其实没那么复杂。主要是区别于在声明定义的时候,有的人会迷惑,要不要加*
如下
int *p
p=&x;//此处明明是p=&x???????,好往下看

int *p=&x//其实在声明的时候这样也是可以的。但是这样写定义不明确。

我们现在来总结一下,在定义的时候*号,只是一个说明符。意义是告诉你p是一个指针,而不是一个其他数。在声明的时候就一定需要*了,
所以请注意上面的对比。

在引用的时候区别就相当简单了
p是指针变量,指的是一个变量的地址。
*p代表的是所指向的这个变量的值。
举例:
int a=3;
int *p
p=&a;
printf("%d%d",*p,p);
这个时候两个输出的值,第一个就是3(变量的值),第二个输出的是变量a存储的地址单位。
楼主要是还有疑问可以一起讨论
全部回答
例子:printf("%d",*p);就是输出地址p的内容,printf("%d",p);就是输出p的地址!
首先有一点要注意:星号不是指针名称的一部分。如果只是要使用指针保存的地址,不必用到*。除此之外,是否带星号在程序中会导致不同的语义。 指针和星号连用大致有以下几种情况: 1.声明时: 如int a,*b,*c,d;声明整形变量a、d和指向整形变量的两个指针b和c。 2.引用: int a=0; int *b=&a; printf("a=%d",*b); 这里b保存了变量a的地址。printf中*b的结果就是a的值。 另外,如果要打印b保存的地址,稳妥起见,用printf("%p",b);。 衍生用法包括typedef,声明描述符的语法与之完全相同。 3.强制类型转换(多用于void*指针): 例如 int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } 另外构造更复杂类型的指针,可以有多个*连用的情况。
1、声明及定义一个指针时,需要用*表示标识符是一个指针。比如 int *p;定义一个指针,p是int *类型,这里的*主要说明变量是指针类型。 2、作为间接访问运算符 int a = 2; int *p = &a; printf("%d\n", p, *p);以上面的例子来说: p:是指针,是一个地址,它是int *类型。 *p:是指针所指内存中存储的数据,是一个int类型。
当表示某种类型的指针的时候,*一定要有 譬如int *, 这个表示int指针 指针变量中存储的是一个地址,如果要对这个地址中的值进行操作的话,也需要用到*,如果仅仅对指针本身进行操作的话,就不需要* 譬如 int a=10; int *p;//这个*不能省略,表示int指针 p=&a;//这里不需要*,这里把一个地址赋值给指针p *p=20;//这个*不能省略,*p就相当于a,就相当于a=20;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
苹果4怎么升级系统ios8
岳利沙地址在什么地方,想过去办事
我第一次用网银不知道怎么用,让我输入口令,
泉源大道我想知道这个在什么地方
中国女排夺冠比分表
临泉羊肉馆(城中南路)地址在什么地方,想过去
洛阳到白云山旅游怎么去最划算,要两天,3到4
大便稀如水状,身体没有什么不适,就是大
女朋友说每一件事都要用多方面的角度来看它,
圣馨大地家园东南门(人行门)在哪里啊,我有事
第一次开淘宝店要去淘宝培训班学习下吗
杨六山胡辣汤在什么地方啊,我要过去处理事情
我穿裤子是2尺8寸的,买什么尺码的裤子?要欧
微信自助解封邀请来帮助解封的好友能更换吗
小米note用了两年,非常耗电是不是需要重换一
推荐资讯
洼里社区怎么去啊,有知道地址的么
企业短信通v5.4短信发送失败
海口哪里有电动车卖
爱上一个已婚男人,他老婆知道我们的事情了,而
后河西幼儿园怎么去啊,有知道地址的么
炸金花会作弊吗
为什么我和男生聊天,时间久了,就变成我撩他
哈达山地址有知道的么?有点事想过去
常州大学体育运动委员会我想知道这个在什么地
高分求魔兽世界高手 具体怎么去熔火前线??
求医学高人:我是初三学生 上体育课蛙跳4趟(
每天上网玩游戏9个小时算网瘾吗?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?