函数返回值问题
#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