gpt4 book ai didi

c - 为什么我的 char * 返回不同的值?

转载 作者:行者123 更新时间:2023-11-30 19:13:24 25 4
gpt4 key购买 nike

我有一个如下所示的函数:

char *function1(){

//SOME CODE HERE

char result[16];
char *ptr = result;
return ptr;
}

所以它的作用是计算一些值(128 位),将其存储在字符缓冲区中,然后返回指向缓冲区的指针。我使用以下命令打印 function1 中的缓冲区:

for (i = 0; i < 16; i++)
printf("%02X ", result[i]);
printf("\n");

结果是一个 128 位值并被打印出来。

现在在另一个函数中我有以下代码

char *ptr_to_result = function1();

我再次使用这段代码打印它:

for (i = 0; i < 16; i++)
printf("%02X ", ptr_to_result[i]);
printf("\n");

result2 是打印出来的 128 位值。

由于某种原因结果!= 结果2,我不明白为什么。

最佳答案

缓冲区结果将从函数function1()返回时消失,并且访问消失的缓冲区(通过返回的指针)会调用未定义的行为 .

char result[16]; 更改为 static char result[16]; 将防止 result 消失,并应使其正常工作,除非您在多线程或中断处理程序中使用该函数。 (此更改将使函数不可重入)

关于c - 为什么我的 char * 返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639593/

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