gpt4 book ai didi

c - 不分配内存赋值的指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:13 25 4
gpt4 key购买 nike

在我的 Visual Studio 中,这段代码

int *a, *b;
b = a;
a = (int *)malloc(SIZE * sizeof(int));

将接收到运行时检查失败:变量在未初始化的情况下被使用。那么如果一个指针没有分配内存那么分配是无意义的并且是被禁止的?在我的旧观点中,指针在我的开发环境中是一个 4 字节的数字来描述一个地址。所以在想象中,是这样的:

int *a, *b;
b = a;
a = (int *)malloc(SIZE * sizeof(int));
*a = 10;
printf("%d", *b);

然后*b = 10;但显然不是这样的……所以我很困惑,为什么指针 a 和 b 没有按照下面的方式指向同一内存?有人可以给我解释一下吗?

最佳答案

这很糟糕:

int *a, *b;
b = a;

出于同样的原因,这很糟糕:

int a, b;
b = a;

您正在读取一个未初始化的变量。 a 具有不确定的值。它实际上不必指向分配的内存,这样就可以了:

int* a = 0;
int* b = a; // OK, a was initialized

关于c - 不分配内存赋值的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31307423/

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