gpt4 book ai didi

c - 从函数返回指针数组

转载 作者:行者123 更新时间:2023-11-30 21:01:51 26 4
gpt4 key购买 nike

我想从return_string函数返回一个指针数组。

#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.编译时,我收到警告函数返回局部变量的地址

2.运行时,我只是得到垃圾而不是我想要的字符串。

知道为什么会发生这种情况以及如何从函数返回指针数组吗?

最佳答案

val 是一个自动变量,因此在 return_string 返回后它会超出范围。因此,通过超出函数范围的指针修改它是未定义行为

你可以:

  1. 在免费存储上分配数组:

    char **return_string(void)
    {
    char** val = malloc(sizeof(char*) * 3);
    val[0] = "foo";
    val[1] = "bar";
    val[2] = "something";
    return val;
    }
  2. 将指针传递给函数并处理指针:

    void return_string(char** ptr);

    ...

    char* array[3];
    return_string(array);

    ...

    void return_string(char** ptr)
    {
    ptr[0] = "foo";
    ptr[1] = "bar";
    ptr[2] = "something";
    }

关于c - 从函数返回指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34242656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com