gpt4 book ai didi

C指针赋值

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:36 26 4
gpt4 key购买 nike

所以我今天在玩弄一些指针,遇到了一个相当困惑的困境。我经常使用 C,但似乎无法弄清楚为什么这行不通,也许这只是那些日子之一。

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

void subr(int* numero){
int* newNum = malloc(sizeof(int));
(*newNum) = 5;
numero = newNum;
printf("%d\n", *numero);
}

int main(){
int* number;
printf("%p\n", (void *) number);

subr(number);
if(number == NULL)
printf("Not assigned\n");
else
printf("%d\n", *number);
}

所以我在 main 中创建了一个指针,将其传递给一个分配空间的函数,然后将其分配回传入的指针。为什么每次运行它时我都得到指针仍然为空?

最佳答案

此代码不起作用的原因是 C 是一种按值传递的语言。如果你想修改任何东西,你必须传递一个指向它的指针:

void subr(int** numero){
int* newNum = malloc(sizeof(int));
(*newNum) = 5;
*numero = newNum;
printf("%d\n", **numero);
}

int main(){
int* number = NULL; // <<== Need to initialize it
printf("%p\n", (void *) number);

subr(&number);
if(number == NULL)
printf("Not assigned\n");
else
printf("%d\n", *number);
free(number); // <<== Don't forget to free what's malloc-ed
}

关于C指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26109233/

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