c语言字符串和字符数组

来源:互联网 发布:淘宝小号批量手机号 编辑:程序博客网 时间:2024/05/05 13:24

malloc:
申请空间后要做强制转换。
字符串常量:

#include <string.h>#include <stdio.h>#include <stdlib.h>int main (int argc, char **argv){  int i = 0;  char str1[] = "123456";  char *str2 = "asdff";  char *str3 = (char *) malloc (sizeof (char) * 6);  str3[3] = 'K';  str3 = "12312";               //此语句存在则str3内容不可修改,即对str3进行字符串赋值后不可修改  //在赋值后实际是将新的字符串"12312"的首地址赋给str3了 str3此时成为与str2类似的字符串常量  //之后free(str3)无效 先前申明的空间没有被释放  str1[3] = 'K';                //可修改  str2[3] = 'K';                //不可修改,  str3[3] = 'K';                //不可修改,  free (str3);  return 0;}

使用GDB调试,直接运行,结果如下:

Program received signal SIGSEGV, Segmentation fault.
0x00000000004005d9 in main (argc=1, argv=0x7fffffffdf88) at a.c:16
15 str2[3] = 'K'; //不可修改,

原创粉丝点击