#include<stdio.h>
int main()
{
char *ch="asfsdfasd",**t;
*t=ch;
printf("%s",*t);
return 0;
}
写的代码是这样,必须用二级指针做,我预期是能打印出ch字符串,能编译但是运行没结果。ch存放字符串的地址,然后赋值给*t,最后输出。想知道为什么这么写不行。谢谢大家!
不是*t=ch;而是t=&ch; t还是个野指针,直接操作*t是非常不安全的
#include<stdio.h>
int main()
{
char *ch="asfsdfasd",**t;
t=&ch; //不是*t=ch;而是t=&ch;
printf("%s",*t);
return 0;
}
如果一定要*t=ch,就要先给t分配空间:
#include<stdio.h>
#include <malloc.h>
int main()
{
char *ch = "asfsdfasd", **t;
t = (char**)malloc(sizeof(char*)); //给t分配一个char*的空间
*t = ch;
printf("%s", *t);
free(t);
return 0;
}
#include<stdio.h>
int main()
{
char *ch="asfsdfasd",**t;
t=&ch; //不是*t=ch;而是t=&ch;
printf("%s",*t);
return 0;
}
如果一定要*t=ch,就要先给t分配空间:
#include<stdio.h>
#include <malloc.h>
int main()
{
char *ch = "asfsdfasd", **t;
t = (char**)malloc(sizeof(char*)); //给t分配一个char*的空间
*t = ch;
printf("%s", *t);
free(t);
return 0;
}
温馨提示:答案为网友推荐,仅供参考