混淆通过引用传递字符指针数组

时间:2018-08-25 10:59:53

标签: c pointers local-variables

如何通过引用传递字符指针数组?我尝试通过&tokens传递并在func()中取消引用,但仍然无法正常工作。

这是我的代码:

#include <stdio.h>

void func(char* tokens[10])
{
    char word[10] = "Hello\0";
    tokens[0] = word;
}

int main()
{
    char* tokens[10];

    func(tokens);
    printf("%s", tokens[0]);

    return 0;
}

结果:

He����

1 个答案:

答案 0 :(得分:0)

您需要使用malloc()动态分配内存以返回并稍后使用free()取消分配。从函数返回局部变量是不正确的,因为该内存是堆栈中的,并且在函数完成执行后将不可用。

这是您的工作代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void func(char* tokens[10])
{
    char* word = malloc( 10 );
    strcpy( word, "Hello!" );
    tokens[0] = word;
}

int main() 
{
    char* tokens[10];

    func(tokens);
    printf("%s", tokens[0]);

    free( tokens[0] );

    return 0;
}

输出:

Hello!

这是实时示例:https://ideone.com/LbN2NX