c语言指针

来源:互联网 发布:对对子软件在线 编辑:程序博客网 时间:2024/05/02 00:05

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

 


原创粉丝点击