因为C语言中,凡是以""括住的形式直接出现,而且你又没有为其分配内存空间的字符串都是常量字符串,是不能修改其值的。
这样:
char a[6]="hello";
a[2]='c';
就可以了。
这里你为hello分配了一个长度为6的字符数组空间来存放。
给字符数组赋值的方法
1、定义的时候直接用字符串赋值
char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!
2、对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};
3、利用strcpy
char a[10];
strcpy(a, "hello");
c语言中,为什么不能对字符指针变量指向的字符串再赋值?
因为C语言中,凡是以""括住的形式直接出现,而且你又没有为其分配内存空间的字符串都是常量字符串,是不能修改其值的。这样:char a[6]="hello";a[2]='c';就可以了。这里你为hello分配了一个长度为6的字符数组空间来存放。
C语言里为什么字符指针变量指向的字符串常量中的内容是不可取代的?
指向字符串常量的话,这段常量字符串是存储在静态存储区的,内容不能修改。当然你可以让指针指到别的地方
C语言中,不能用scanf()函数输入字符串后赋给字符型指针变量?具体请看...
char *pc; 只是声明了指针,这个指针没有赋值 也就是它指向的地址还不确定 pc没有初始化 改成 char place[256];char *pc=place;
C语言,为什么char str[]="I love China"可以赋值,但是char str[20...
str = "I love China!";这句话里面,先定义了一个char数组str,str就指向那一片大小为20的内存空间,然后再开辟一段内存空间放进字符串,这时候问题就来了,str本身是一个固定的不能改变的值,你强行把新的地址赋值给它,当然就是不合理的。
在C语言中能否直接给指针指向的数据赋值?为什么?
可以,但int *p;*p=7;这样不行。因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。这样才可以:int a,*p=&a;*p=7;实际上就是使a等于了7。
c语言char和int可以互相赋值,但指针不能赋值,char *和int *不能直接...
而int 则是两个字节16个二进制位 由于指针所指向的是变量的起始地址 那么在当指针指向一段连续内存时 它找到每个变量是通过对起始地址运算得到的下一个元素的起始地址 然后根据长度 取出里面的内容 输出我们想要的格式 所以不同的类型长度不同 相互赋值 必定无法得到想要的结果 ...
在C语言中能否直接给指针指向的数据赋值?为什么
可以直接给指针指向的数据赋值。因为*p操作是这样一种运算,返回p的值作为地址的那个空间的取值。存放地址的变量称为指针变量。指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址...
为什么字符指针指向字符串的时候,输出时不需要再指针前加*号呢?
,而str指向了 I LOVE CHINA!中的第一个字符I。cout流里面有一个循环就是输出str指向的字符串,其中把str赋给了temp指针,作为移位用,从而一个个输出出来。而*str是一个字符了就是I ,*是解引用 就是读出str指向的字符 ,所以*str就是I了 这个是不能赋值和移位的 所以输出不出来。
为什么字符串之间不能进行赋值操作
只能用来初始化数组或结构体,而数组可以隐式转换成指向其首元素的指针右值,该值能初始化或复制给指针对象。另外C字符串是以零值字符结尾的连续字符对象序列,并不是字符指针,只是可以通过字符指针处理字符串,C语言可以写 char *p = (char[]){'a', 'b', 'c'}; 。也可以用在赋值里。
C语言中可以给指针变量赋值常数吗?
C语言中可以给指针变量赋值常数。1、申请了空间(在常量区),存放了字符串 2、在字符串尾加上了'\/0'3、返回地址,这里就是返回的地址赋值给了p 字符串常量"hello"出现在一个表达式中时,"hello"表达式使用的值就是这些字符所存储的地址(在常量区),而不是这些字符本身。所以,可以把字符串赋值给...