C语言中变量.指针指针变量的关系以及✴和&的关系
1个回答
展开全部
指针变量是指向一个实际内存地址的变量。而scanf函数的输入中后一个参数正好是需要一个地址来表明这个输入的数据放置在内存中的什么地方,还记得对于这样的输入
scanf("%d",&(int))
int或者可以是其他某个值类型的变量名,前面的&符号就是取他的地址。你这里p是一个指针变量,所以就不需要取地址符号了。
对于字符指针,他指向的是一个字符的地址,所以你后面的char
*a;scanf("%s",a)语句会出错,%s
是一串字符,而不是一个字符,类型不匹配,a没有办法指向字符串;而char
*string="i
love
china"这个语句中,其实并
不
是把后面的"i
love
china"赋值给了string,c语言中是用一连串的内存地址存放字符串的,类似于字符数组,而这样的复制语句其实是把数组的首地址进行赋值,或许你还见过这样的语句int
a[]={1.2.3};int
*p;
p=a;
这些复制都是把数组的首地址进行复制,而数组首地址是第一个元素(序号为0)的地址,所以类型是相匹配的。
scanf("%d",&(int))
int或者可以是其他某个值类型的变量名,前面的&符号就是取他的地址。你这里p是一个指针变量,所以就不需要取地址符号了。
对于字符指针,他指向的是一个字符的地址,所以你后面的char
*a;scanf("%s",a)语句会出错,%s
是一串字符,而不是一个字符,类型不匹配,a没有办法指向字符串;而char
*string="i
love
china"这个语句中,其实并
不
是把后面的"i
love
china"赋值给了string,c语言中是用一连串的内存地址存放字符串的,类似于字符数组,而这样的复制语句其实是把数组的首地址进行赋值,或许你还见过这样的语句int
a[]={1.2.3};int
*p;
p=a;
这些复制都是把数组的首地址进行复制,而数组首地址是第一个元素(序号为0)的地址,所以类型是相匹配的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询