【发布时间】:2021-08-29 04:26:02
【问题描述】:
我试图理解为什么 *ptr 返回一个地址,以及当我尝试指向该地址的指针时。 代码不起作用!我想知道那个地址是什么意思,或者它只是堆里的一些垃圾?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int* ptr = (int*)malloc(sizeof(int));
printf("%d %d\n", *ptr, ptr);
}
这就是它所显示的: 1315264432 1315247120
【问题讨论】:
-
malloc返回的内存初始值未指定。
-
"
*ptr返回地址" 您是如何确定它是地址的?我看到的只是一个数字,它很可能是一个常规整数而不是指针。 -
那个数字看起来像一个地址!
-
是什么让您认为这是一个地址?顺便说一句,使用
%d打印实际地址(例如ptr的内容)具有未定义的行为。它应该是%p并且指针转换为(void*)ptr。 -
请解释一下“不持有值”是什么意思。