下面这个程序有什么问题呢? C语言面试中遇到的一个问题。希望得到详细解释,非常感谢!
#include<stdio.h>
#include<stdlib.h>
int main(){
void getstr(char* str);
char *test;
getstr(test); //能否获得字符串?
printf("%s",test);
return 0;
}
void getstr(char *str){
str = (char*)malloc(1024);
strcpy(str,"OK?");
}
应该传 char**
给 getstr
函数,不然你把 str
重新赋值后就和原来的 str
无关了。
大概是这个样子:
int main(){
void getstr(char* str);
char *test;
getstr(&test); //能否获得字符串?
printf("%s",test);
free(test); //要记得 free 哦
return 0;
}
void getstr(char **str){
*str = (char*)malloc(1024);
strcpy(*str,"OK?");
}
在c中,凡是要修改变量的值都需要传递指针.....只是这里你要修改指针的值..也就是指针的指向.