解释:别说换成数组,就是 char *pch1 = 'h'; 都是不可以的,因为双引号做了3件事,别的都不会做。 字符串常量"hello"出现在⼀个表达式中时,"hello"表达式使⽤的值就是这些字符所存储的地址(在常量区),⽽不是这些字符本⾝。所以,可以把字符串赋值给指向字符的指针p,⽽不能把字符串赋值...
字符串在内存的存放是以字符为单位存放的;字符指针变量,只要是指向的地址是存放字符类型,那么就就符合语法的;字符串是把首地址,赋给了指针变量
C中没有字符串变量,所以说“字符串可以赋值给字符指针变量”是无稽之谈。C中的字符串处理是用字符数组完成的,可以把承载字符串的字符数组的首地址(第一个字符的地址)赋给一个字符型指针(实质就是把一个字符变量的地址赋给一个字符型指针,所以是匹配的),而字符串本身是不能整体赋给任何变量的!
这不是绝对的:当指针指向的字符串是常字符串时当然不能再赋值,因为目标是“常量”,而当指针指向的字符串不是常字符串时就可以再赋值,比如用动态申请内存方法创建的字符串。具体说就是用char *p="abcqer12345";这种方法定义字符串是不能通过指针改变内容的,原因是这个定义确定了abcqer12345是字符串...
当你定义一个字符串 对于C来说,他才不管你的字符串是什么,有多长,他只记一个字符串开始地址,结束的话当读到0就当做结束。所以所谓字符串在C中的底层表示只是一个地址。而指针变量存的就是地址,两者可以赋值。
既然是变量,就可以读和写,所以可以赋值;由于是强类型,所以只要是指针类型或者能转换成指针类型的就可以赋值;由于它是一个指向”字符串指针“的指针,所以给它赋值的时候,如果所赋值对象类型不是指向”字符串指针“,一般编译器都会提示一下的。name也是一个变量,这个变量的类型也是指针,这个指针所指向的是”字符串...
不是字符串赋值给字符指针变量 而是字符指针指向了该字符串
所说的字符串就是字符数组。也就是char类型的数组。\x0d\x0a与普通数组不同的,字符串必须以'\0'作为结束符。\x0d\x0a而在C语言中,类型为T的一维数组,其首地址等效于该类型的一维指针,即T*型。\x0d\x0a于是字符串,也就是字符数组,首地址就可以当做char *型使用了。\x0d\x0a...
一、C语言中,为什么字符串可以赋值给字符指针变量? char *p; a='5'; p=&a; //显然是正确的, p="abcd"; //但为什么也可以这样赋值?? 问:一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点! 答:双引号做了3件事: 1.申请了空间(在常量区),存放了字符串 2. 在字符串尾加上了'/0...
上边的表达式为什么可以,而把p换成数组,然后再赋值就不行了 解释: 字符串常量"hello"出现在一个表达式中时,"hello"表达式使用的值就是这些字符所存储的地址(在常量区),而不是这些字符本身。 所以,可以把字符串赋值给指向字符的指针p,而不能把字符串赋值给一个字符数组。