C 字符字符串*与字符字符串[]
以下两者之间是否有区别:C 字符字符串*与字符字符串[],c,C,以下两者之间是否有区别: char string = "name"; const char* point = string; vs 请你也解释一下区别好吗?好的 第一个简单地指向内存的只读部分,声明实际上应该是: const char* string = "name"; 第二个创建一个足够长的数组来保存字符串“name”(因此,四个字符加上一个空终止符)并将字符串复制到分配的空间中。是 #include <stdio.h> int main(int argc, const ch
char string = "name";
const char* point = string;
vs
请你也解释一下区别好吗?好的
第一个简单地指向内存的只读部分,声明实际上应该是:
const char* string = "name";
第二个创建一个足够长的数组来保存字符串“name”
(因此,四个字符加上一个空终止符)并将字符串复制到分配的空间中。是
#include <stdio.h>
int main(int argc, const char** argv)
{
const char *a1 = "hello";
const char a2[] = "hello";
char* b1;
char* b2;
b2 = (char*) a2;
*b2 = 'c';
puts(b2);
b1 = (char*)a1;
*b1 = 'c';
puts(b1);
return 0;
}
第一个简单地指向内存的只读部分,声明实际上应该是:
const char* string = "name";
第二个创建一个足够长的数组来保存字符串“name”
(因此,四个字符加上一个空终止符)并将字符串复制到分配的空间中
#include <stdio.h>
int main(int argc, const char** argv)
{
const char *a1 = "hello";
const char a2[] = "hello";
char* b1;
char* b2;
b2 = (char*) a2;
*b2 = 'c';
puts(b2);
b1 = (char*)a1;
*b1 = 'c';
puts(b1);
return 0;
}
int main(int argc,常量字符**argv)
{
const char*a1=“你好”;
常量字符a2[]=“你好”;
字符*b1;
char*b2;
b2=(字符*)a2;
*b2=‘c’;
看跌期权(b2);
b1=(字符*)a1;
*b1=‘c’;
看跌期权(b1);
返回0;
}
b2将正确显示“大提琴”。
b1将导致分段故障
这是因为b1存储在代码的文本段中,而b2存储在数据段中
我希望我没有把事情搞砸
此外,编译器可以通过识别某些东西是在文本段上声明的,但在代码中被访问,从而神奇地使其无效,因此C有时会流行起来,并将声明更改为数据段
int main(int argc,常量字符**argv)
{
const char*a1=“你好”;
常量字符a2[]=“你好”;
字符*b1;
char*b2;
b2=(字符*)a2;
*b2=‘c’;
看跌期权(b2);
b1=(字符*)a1;
*b1=‘c’;
看跌期权(b1);
返回0;
}
b2将正确显示“大提琴”。
b1将导致分段故障
这是因为b1存储在代码的文本段中,而b2存储在数据段中
我希望我没有把事情搞砸
此外,编译器可以通过识别某些东西是在文本段上声明的,但是在代码中访问的,从而神奇地使其无效,因此C有时会流行起来,并将声明更改为数据段。首先,
char string=“name”
不是有效的C。首先,char string=“name”
不是有效的C。