【发布时间】:2015-12-12 17:13:55
【问题描述】:
我想从return_string function 返回一个指针数组。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char **return_string(void);
int main(int argc, char *argv[])
{
int i = 0;
char **val = return_string();
for(i = 0; i < 3; i++)
printf("%s\t%d\n", val[i],val[i]);
return 0;
}
char **return_string(void)
{
char* val[] = {"foo", "bar", "something"};
return val;
}
1.编译时收到警告function returning address of local variable
2.运行时,我得到的只是垃圾而不是我想要的字符串。
知道为什么会发生这种情况以及如何从function 返回array of pointer?
【问题讨论】:
-
您不能在 C 中的函数之间传递/返回数组。而且您的代码中没有数组。
-
并注意警告。那个已经很具体了。
-
@Olaf "你的代码中没有数组" -
char* val[]当然是一个数组。
标签: c string function pointers