具体问题如下:
int main()
{
char *p;
scanf("%s",p);
}
可以像这样直接给指针p通过输入赋值吗?
可以通过指针赋值,但是你这么写是错误的,参考如下:
方法一:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* buf = (char*)malloc(100); //使用malloc申请内存
scanf("%s",buf);
printf("%s",buf);
free(buf);
return 0;
}
方法二:
#include <stdio.h>
int main()
{
char buf[100]; //数组
scanf("%s",buf);//数组名本身就是指针
printf("%s",buf);
return 0;
}
可以,但是毫无意义
你知道程序运行起来,内存首地址是怎么分配的吗
如果你知道,就可以像玩GBA金手指一样直接修改指针的地址
否则乱赋值一气没有任何意义
不可以,既是指针,能给它赋值也就是地址值,赋给它字符串,它装不下,修改如下,供参考:
#include <stdio.h>
#include <malloc.h>
int main()
{
char* p=(char *)malloc(32);
char* q = p;
scanf("%s", p);
puts(p);
puts(q);
return 0;
}