问题描述
- c语言中字符数组初始化问题
- 字符数组初始化
1:
char str[]=""123"";//不报错
2:
char str[4];
str=""123"";//不能将const char[4] to char[4]
字符指针初始化
1:
char *str=""123"";//不报错
2:
char *str;
str=""123"";//不报错
求大神解释这是为什么
解决方案
我来解释一下:
数组初始化
1、char str[]=""123"";//不报错
原因是,这样的写法,实际上str是一个指针变量,str指向了“123”数据段。
等效于char *str=""123"";
char *str;
str=""123"";
这个很好理解了,对一个指针变量赋“123”数据段的首地址。
2、char str[4];
str=""123"";//不能将const char[4] to char[4]字符指针初始化
这个是错误的,表面上的意义是str是一个数组,str变量则是这个数组的首地址,等效于&str[0],因此这样赋值是非法的。
解决方案二:
123是内存里而char *str是指针,指向。char str[]=?是初始化,这样编译 for(i=0;i<string.length;i++)str[i]=string[i]
char str[4],str已经固定不能变,他是const,str是const不能指向别char char *str是指针可以到内存123
解决方案三:
你知道123正好是4个字符,能装在str[4]中,编译器并不知道这一点。它统统不让定义了长度的数组接受一个字符串。
解决方案四:
char str[4];
str=""123"";//不能将const char[4] to char[4] 是因为 str 被认为是常量型指针,所以不能修改它。
字符指针初始化
解决方案五:
不太明白你的问题,这些操作都没问题啊
时间: 2025-01-15 19:06:02