如题所述
char *p; 这里定义指针变量,但没有初始化赋值,p值是个不确定的数值,此时的p被称为野指针
*p = "abcdef" ;
一、*p表示引用p指针地址中的数据(表示一个字符变量),而p没有确定的值,所以,这样引用会导致错误!
二、*p是指一个字符变量, 而右边"abcdef" 是个字符串(地址,指针),所以,两个数据类型不一样,这样赋值也是错误的!追问
*p = "abcdef" ;
一、*p表示引用p指针地址中的数据(表示一个字符变量),而p没有确定的值,所以,这样引用会导致错误!
二、*p是指一个字符变量, 而右边"abcdef" 是个字符串(地址,指针),所以,两个数据类型不一样,这样赋值也是错误的!追问
那这个B选项的定义也是错的吗
追答数组名是个常量,代表数组首地址,不允许进行赋值操作!
追问哦哦
那它在初始化的时候
比如选项B指的是什么
指向字符串第一个元素g吗
这个选项B
追答char *str="good" ; 这里的*是跟随char的,不是运算符,表示变量str类型是char *类型!
理论上相当于:
char *str ;
str="good" ;
str指向字符串"good"的首地址,也就是第一个元素g的所在地址
哦哦懂了
还有最后一个问题
字符串在连接的时候,输出时什么时候中间有空格什么时候没有啊
像这个输入的字符串是I love,后连接上的是programming然而中间有空格
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-12-29
因为指针p知识声明了,没有定义(也就是没有赋初值)。所以此时P的值是undefined,也就是乱七八糟的值。
所以*p 对一个undefined的地址取值就是错误的
所以*p 对一个undefined的地址取值就是错误的