这有什么区别:
int num = 5;
int* num1 = #
printf("%p", num1);
而这个:
int num = 5;
int* num1 = #
printf("%p", &num1);
在第一种情况下,printf("%p", num1);
,您正在打印num1
的值,这是num
的地址。
在第二种情况下,printf("%p", &num1);
,您正在打印num1
的地址。
第一段代码打印num1
的内容,其中包含num
的地址。 第二块打印num1
本身的地址。
两者都在打印一个地址,每个地址都是两个不同的对象。
%p
printf 格式说明符需要与void *
兼容的参数,因此如有必要,您应该强制转换相应的参数。
对于第一种情况:
int num = 5;
int* num1 = #
printf("%p", (void *)num1);
打印num
变量的地址,因为num1
指向num
。
对于第二种情况:
int num = 5;
int* num1 = #
printf("%p", (void *)&num1);
打印num1
变量的地址。