📅  最后修改于: 2023-12-03 15:29:44.397000             🧑  作者: Mango
在 C 语言中,指针是非常重要和强大的概念。高级指针更是指针的进一步拓展,并发挥了更大的作用。本文将介绍 C 语言中高级指针的问题2。
以下代码中,试分别计算 sizeof()
函数的返回值,并阐述原因。
int main() {
int i = 10;
int *p = &i;
printf("%lu\n", sizeof(&i)); // 输出结果为?
printf("%lu\n", sizeof(&p)); // 输出结果为?
return 0;
}
要理解这个问题,需要对指针的概念有一个深入的认识。
首先, &i
表示变量 i
的内存地址,即 int
类型的指针,因此第一个 printf()
语句输出的结果应该是 8
(在 64 位系统下),表示指针变量的大小。
其次,&p
表示为指针变量 p
的地址,在 64 位系统下是 8 个字节即指针的大小。
注意:在 32 位操作系统中,指针大小为 4 个字节,两个
printf()
函数输出的值会不同。
通过本例,我们了解了在 C 语言中高级指针的问题。要注意的是,指针的大小在不同的操作系统和编译器上可能有所不同。在编写程序时,应尽量考虑可移植性,避免出现这种问题。