码迷,mamicode.com
首页 > 其他好文 > 详细

char*和char[]的区别

时间:2017-04-03 20:50:44      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:不清楚   turn   核心   字符串   字符   静态   stdio.h   运行   转储   

通过这边随笔的学习,终于搞清楚为什么在之前两篇随笔"静态内存"和"strcpy函数学习"中遇到的dest传入char*会导致段错误的原因。

例子:

#include<stdio.h>

int  main(void)
{    
    char* str1="string string string string";
    char str2[]="string string string string";
    printf("str1=%s\n",str1);
    printf("str2=%s\n",str2);
    str2[0]=p;
    printf("str2=%s\n",str2);
    str1[0]=p;
    printf("str1=%s\n",str1);

    return 0;
}

运行结果:

str1=string string string string
str2=string string string string
str2=ptring string string string
Segmentation fault (核心已转储)

从上面例子可以看到:

1.char*和char[]都可以表示字符串

2.char[]可读可写,可以修改字符串的内容。char*可读不可写,写入就会导致段错误(具体原因不清楚)

因此可以解释,当直接对char*类型的指针变量写入数据时,会导致段错误,需要使用char[]

char*和char[]的区别

标签:不清楚   turn   核心   字符串   字符   静态   stdio.h   运行   转储   

原文地址:http://www.cnblogs.com/jason207489550/p/6663490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!