📜  C |高级指针|问题2(1)

📅  最后修改于: 2023-12-03 15:29:44.397000             🧑  作者: Mango

C |高级指针|问题2

在 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 语言中高级指针的问题。要注意的是,指针的大小在不同的操作系统和编译器上可能有所不同。在编写程序时,应尽量考虑可移植性,避免出现这种问题。