一个c语言指针的问题
问题一:如图所示,为什么*p输出的是a而不是amiss,为什么p输出的是amiss而不是一个地址呢??问题二:char*不是一个字符指针吗,可以为他赋值的不应该是一个地址...
问题一:如图所示,为什么*p 输出的是a 而不是 a miss ,为什么 p 输出的是 a miss 而不是一个地址呢??
问题二:char * 不是一个字符指针吗,可以为他赋值的不应该是一个地址吗,为什么可以把a miss这个字符串赋给字符指针??
相比而言,
问题三:为什么当变成整形指针了以后,*p就会按照我的思路变成10,p就是个地址,这和上个图有什么区别?? 展开
问题二:char * 不是一个字符指针吗,可以为他赋值的不应该是一个地址吗,为什么可以把a miss这个字符串赋给字符指针??
相比而言,
问题三:为什么当变成整形指针了以后,*p就会按照我的思路变成10,p就是个地址,这和上个图有什么区别?? 展开
3个回答
展开全部
首先说一下,你这不是C语言,是C++
问题一:这个就是问题二的内容了.p指向的是a,而p是一个地址.C语言输出一个字符串不是靠一个实际的数据输出的,而是靠着实际数据的首地址输出的.
问题二:char *ch = "aadsf";你要知道,一个字符串的值是这个临时值的首地址,也就是a的地址.而你又把这个地址给保存了,所以"aadsf"也被保存了.也就是说,当电脑执行过char*ch="aadsf"后,内存中会多出9个字节的内存空间.其中4个字节保存着"aadsf"的首地址,另5个字节保存着"aadsf"
问题三:p指向一个变量,在p前面加一个*,就等价于这个变量.
问题一:这个就是问题二的内容了.p指向的是a,而p是一个地址.C语言输出一个字符串不是靠一个实际的数据输出的,而是靠着实际数据的首地址输出的.
问题二:char *ch = "aadsf";你要知道,一个字符串的值是这个临时值的首地址,也就是a的地址.而你又把这个地址给保存了,所以"aadsf"也被保存了.也就是说,当电脑执行过char*ch="aadsf"后,内存中会多出9个字节的内存空间.其中4个字节保存着"aadsf"的首地址,另5个字节保存着"aadsf"
问题三:p指向一个变量,在p前面加一个*,就等价于这个变量.
追问
既然p保存的是地址,为什么输出时 a miss
追答
cout是可以自己判断数据类型的,你写个p,cout知道是字符指针,就认为这是一个字符串的首地址,cout就会自动把p当字符串处理,与printf("%s", p);等价的.
还有,你问的这问题到底是C还是C++?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、指针可以在初始化时赋初值,char *p = "a miss"; //这个初始化过程,是将指针cp指向字符串的首地址,而并不是传递字符串的值。因为,在C语言里面,没有整体处理一个字符串的机制
所以*p 输出的是a
2、字符串常量传递的是它的首地址,不可以通过*p修改该字符串的值,因为该字符串为常量,而它只是简单的将指针指向该字符串常量
所以*p 输出的是a
2、字符串常量传递的是它的首地址,不可以通过*p修改该字符串的值,因为该字符串为常量,而它只是简单的将指针指向该字符串常量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询