初学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);
}