C语言中定义字符串有哪些方法?
首先是数组,存放在栈区,可读可写,操作起来很方便。
char s1[] = "helloworld";初学者容易写成这样:
char s1[32]; s1 = "helloworld";不过编译的时候就会提示错误,因为数组名是指针常量,地址不能修改。
char *s2 = "helloworld";既然是只读,就是不能修改的意思,非要修改,就是段错误。
s2[0] = 'x';
编译运行结果:
root@Turbo:test# ./test Segmentation fault (core dumped) root@Turbo:test#第三种先在堆上申请空间,然后用字符串拷贝函数把字符串拷贝进去,用完记得释放空间。
char *s3 = (char *)malloc(128); strcpy(s3, "helloworld"); free(s3);初学者容易写成这样:
char *s3 = (char *)malloc(128); s3 = "helloworld"; free(s3);编译没问题,但是运行的时候,直接异常退出。
s3="helloworld"语句后,你以为是把字符串赋值给这块堆空间:
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !