当前位置: 技术问答>linux和unix
C 指针问题
来源: 互联网 发布时间:2017-01-05
本文导语: int main() { char *s="kkkk44555"; char *t="000"; strcpy(s,t); printf("%sn",s); return 0; } 为什么会出现段错误,,,,? | s指针所指的内存空间是只读的,不能写 改为: char s[100]="kkk...
int main()
{
char *s="kkkk44555";
char *t="000";
strcpy(s,t);
printf("%sn",s);
return 0;
}
为什么会出现段错误,,,,?
{
char *s="kkkk44555";
char *t="000";
strcpy(s,t);
printf("%sn",s);
return 0;
}
为什么会出现段错误,,,,?
|
s指针所指的内存空间是只读的,不能写
改为:
char s[100]="kkkk44555";
100是随便写的,总之放得下那么多内容就行了
改为:
char s[100]="kkkk44555";
100是随便写的,总之放得下那么多内容就行了
|
char *strcpy(char *dest,char *src);
把src所指由NUL结束的字符串复制到dest所指的数组中。
可以这样
char *s=new char[100];
也可以这样
char s[100]="kkkk44555";
把src所指由NUL结束的字符串复制到dest所指的数组中。
可以这样
char *s=new char[100];
也可以这样
char s[100]="kkkk44555";
|
在c当中,字符串指针就是字符数组,然后再用指针加偏移的方式进行管理。
|
+1
|
+1
LZ直接用引号写的东西叫常量,被编译器放在一个常量空间中,常量是无法被复制的,你觉得1=2这个赋值能正确吗?
按照#1这个方法,建立一个数组就可以进行strcpy了,因为数组的空间都是变量空间,变量是可以被赋值的,比如s[1]='a',这显然是可以的……
一句话,分清常量和变量……
|
++
|
s和t指针都在常量存储区,是只读的
自己看下变量的存储区吧
静态 全局 栈 常量