您的位置:首页 > 编程语言 > C语言/C++

c语言指针

2013-11-01 21:23 197 查看
初学c语言,今天写了个简单demo,出现段错误。写下来可以方便记忆,也希望高手指导。

#include <stdio.h>
#include <string.h>
void get( char *p);

void main()
{
char *add = "123";
//char add[30] = {'A','B','c','d','e'};
get(add);
printf("%s\n", add);
}

void get(char *p)
{
strcpy(p, "hello world");
printf("%s\n", p);
}


出错:段错误

add指针的指向可以修改,但是指向的值不能修改。因为"123"存放到常量数据段,只读

如果把char *add注释掉,去掉char [add]行注释,则运行正确

修改方法

#include <stdio.h>
#include<stdlib.h>
#include <string.h>

void get( char **p);

void main()
{
char *add = "123";
//char add[30] = {'A','B','c','d','e'};
get(&add);
printf("%s\n", add);
}

void get(char **p)
{
*p = (char *)malloc(100);
strcpy(*p, "hello world");
printf("%s\n", *p);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: