gpt4 book ai didi

c - 将指针传递给函数并更改它指向的地址

转载 作者:行者123 更新时间:2023-12-04 11:23:54 25 4
gpt4 key购买 nike

<分区>

对于一段嵌入式代码 (avr-gcc),我正在尝试减少堆栈内存使用量。所以我想做的是创建一个指针,将它传递给一个函数,然后在函数中,将指针指向的地址更改为堆分配变量的地址。这样,就不会在 main() 内部为 testPointer 分配堆栈内存。

我正在尝试使用以下代码

#include <stdio.h>
char hello[18] = "Hello cruel world";
char* myfunc2() {
return hello;
}
void myfunc(char *mypointer) {
mypointer = myfunc2();
}
int main(){
char *testPointer;
printf("hello: %p\n", &hello);
printf("test: %p\n", &testPointer);
myfunc(testPointer);
printf("test: %p\n", &testPointer);
printf("test value: %s\n", testPointer);
return 0;
}

但是 testPointer 地址没有被重新分配。当然,在现实世界的用例中,myfunc2 不会那么简单,但它返回指向分配给堆的字符数组的指针。

输出:

hello: 0x404030
test: 0x7ffe48724d38
test: 0x7ffe48724d38
test value: (null)

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