gpt4 book ai didi

c - 可能吗?将局部静态值的地址传递给主指针?

转载 作者:行者123 更新时间:2023-12-04 12:07:46 27 4
gpt4 key购买 nike

#include<stdio.h>

void f(int *p) {
static int data = 5;
p=&data;
}

int main(void) {
int *ip=NULL;
f(ip);
printf("%d\n", *ip);
return 0;
}

如果可能的话。什么是原因错误?我该如何修复代码?

最佳答案

通过这种方式,您最终会更改本地指针的值,您需要从 main 传递指向指针 (&) 的指针,并使用取消引用运算符 ( *) 在函数中:

#include <stdio.h>

void f(int **p) {
static int data = 5;

*p = &data;
}

int main(void) {
int *ip = NULL;

f(&ip);
printf("%d\n", *ip);
return 0;
}

但通常我们更喜欢使用从函数返回地址的相同级别的间接寻址,这样更易​​于阅读(至少对我而言):

#include <stdio.h>

int *f(void) {
static int data = 5;

return &data;
}

int main(void) {
int *ip = f();

printf("%d\n", *ip);
return 0;
}

关于c - 可能吗?将局部静态值的地址传递给主指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39657537/

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