gpt4 book ai didi

将指针的值更改为c函数中的指针

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

我传入一个指向函数的双指针,然后该函数在堆上分配空间并将双指针重定向到该内存位置。那么主要我们应该能够访问内存位置及其内容

我的代码:

void grab_letter(char **s){
char *a = (char *) malloc(sizeof(char));
*a = 'r';
s=&a;
}

int main(){
char **s;
grab_letter(s);
printf("returned:%c\n",**s);
}

当我在 grab_letter 调用后使用 gdb 检查 s 的返回值时,它是 0x0。

有人可以帮我解决我在这里的误解吗?:) 谢谢

最佳答案

您必须将一个指针传递给一个指针,您正在这样做,但是您的指针 s 没有指向任何有效的内存。

void grab_letter(char **s){
char *a = malloc(sizeof(char));
*a = 'r';
*s=a; //dereference the pointer to pointer s and point it to a
}

int main( void ){
char *s;
grab_letter(&s); //pass the address of pointer
printf("returned:%c\n",*s);
}

而是传递指针 s 的地址。双指针 s 现在指向 main 中的原始指针 s。然后只需取消引用它并将其指向 a.

关于将指针的值更改为c函数中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571690/

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