在写c程序的时候,发现了一点需要注意的问题,在这里记录一下
这样也不行。提示:
函数返回值问题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *getString(){
//static char str[10]={'a','b','c','d','e','f','g','h','i','\0'}; // (1)
char *str="abcdefghi"; // (2)
//char *str={'a','b','c','d','e','f','g','h','i','\0'}; // (3)
printf("%s\n",str);
return str;
}
int main(){
char *s;
s=getString();
printf("%d\n",strlen(s));
printf("%s\n",s);
}
第(2)句,没有问题,能够正常返回,而且编译时没有警告。
第(3)句,报错了,提示 error: initializer for scalar variable requires one element 看来指针变量不能用初始化数组的方式初始化。
还试了一下:
char *str;
str=(char *)malloc(10);
str={'a','b','c','d','e','f','g','h','i','\0'};
这样也不行。提示:
error: expected primary-expression before '{' token
error: expected `;' before '{' token