在C语言中,字符串的赋值主要有两种方法,第一种是通过指针的方式直接赋值,第二种是通过数组直接赋值。
1、指针式赋值。
通过程序的运行情况,可以知道:char *p = "hello"这种字符串的赋值方式是完全没有问题的。要理解这种赋值方式,首先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了个单引号)在这个语句中做了什么工作。双引号主要做了3个工作,分别是:
(1)申请了空间(在常量区),存放了字符串。
(2)在字符串尾加上了“\0”。
(3)返回地址。
这里所返回的地址就赋值给了char *类型的指针变量p。
2、通过字符数组直接把字符串赋值。程序如下:
扩展资料:
字符串赋值需要注意的一些问题:
直接把字符串赋值给数组名(也就是数组首元素的首地址)是不行的。
会出现以下错误:
参考资料:
百度百科--字符串赋值
charc[10]
//c是数组名,代表数组的首地址。要是想让数组中存放一个字符串,只需知道首地址即可。所以可以用scanf("%s",c)因为c本身就是地址,所以不用加&
char
*s
//s是指针变量,指针可以存放一个地址值
s="abcde"
//c语言中字符串常量是以数组的形式在内存中存放,这条赋值语句,相当于是把abcde的首地址赋给了指针变量s
char
s
//s是一个字符变量,只能给其赋一个合法的字符