C 指针到指针。为什么需要有两个星号?

标签 c pointers

在 C 中,指向另一个指针的指针用两个星号 ** 表示。这是为了便于阅读还是有其他目的?我使用一个星号使一个指针指向另一个指针,我得到了相同的结果:

int main()
{
    int a = 2;
    int *p = &a;
    int *p2 = p;

    printf("val: %p", p2);
}

int main()
{
    int a = 2;
    int *p = &a;
    int **p2 = p;

    printf("val: %p", p2);
}

两者都给了我所指向的正确地址,那么给出了什么?

最佳答案

指针在运行时看起来是一样的。它们是出于语义原因而键入的。您基本上要问的是“为什么我需要给我的指针一个有意义的类型?”

在高级编程语言中,变量具有类型可以帮助清晰并允许编译器发现您可能会错过的错误。

关于C 指针到指针。为什么需要有两个星号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23073501/

相关文章:

c - 尝试将 scanf_s 写入 struct* 时读取访问冲突写入位置?

c - C 中的 time(NULL) 是什么?

c - 如何将 float 转换为不带零和点的 float

c - 以相反的顺序读取文件行(结构、成员、malloc)

c++ - 如何在 C++ 中删除这个二维动态数组

c - 如何用指针变量存储变量

c - 为什么宏函数ListView_GetSelectedColumn()不起作用?它什么也不返回

c++ - 从/dev/urandom 获取一个 float

c - C 中的指针问题

c - 如何知道传递给函数的 char 数组的大小(以字节为单位)?