当C++编译器读取“int *p”时,它做什么?

当C++编译器读取“int *p”时,它做什么?,c++,C++,当编译器读取int*p时,它在做什么?它是否假定p将成为指向整数数组的指针?在C和C++中,星图操作符只能与数组一起使用吗?,数组和指针是相互关联的。特别是,这意味着P可以指向一个int,或者指向INTS数组的第一个元素。C++中的< P>,数组和指针是相互关联的。特别是,这意味着p可以指向单个int,或者指向int数组的第一个元素。是否假定p将成为指向整数数组的指针 否。它将允许p保存任何整数的地址 它并不认为它会。如果是,它就不会假设它是一个数组。它会假设p将成为指向整数数组的指针吗 否。它

当编译器读取int*p时,它在做什么?它是否假定p将成为指向整数数组的指针?在C和C++中,星图操作符只能与数组一起使用吗?

,数组和指针是相互关联的。特别是,这意味着P可以指向一个int,或者指向INTS数组的第一个元素。C++中的

< P>,数组和指针是相互关联的。特别是,这意味着p可以指向单个int,或者指向int数组的第一个元素。

是否假定p将成为指向整数数组的指针

否。它将允许p保存任何整数的地址

它并不认为它会。如果是,它就不会假设它是一个数组。

它会假设p将成为指向整数数组的指针吗

否。它将允许p保存任何整数的地址


它并不认为它会。如果是,则不会假定它是一个数组。

以下是一个可能有帮助的示例:

#include <stdio.h>

main()
{
    int i = 10;
    int ia[2] = {1,2};

    int *p;
    p = &i;
    printf("%d\n", *p);
    p = ia;
    printf("%d\n", *p);
}

输出值为10,后跟1。

下面是一个可能有帮助的示例:

#include <stdio.h>

main()
{
    int i = 10;
    int ia[2] = {1,2};

    int *p;
    p = &i;
    printf("%d\n", *p);
    p = ia;
    printf("%d\n", *p);
}
输出为10,后跟1

当编译器读取int*p时,它在做什么

这将设置一个名为p的变量,该变量是指向整数的指针

它是否假定p将成为指向整数数组的指针

没有

p可以只指向一个整数,尽管可以使用后面或前面的指针值访问后面甚至前面的整数值。所以它也可能指向整数数组的第一个元素

*p或p[0]将返回指针末尾的整数

*p+1或p[1]将在指针末尾的整数之后立即返回整数

*p-1或p[-1]将返回指针末尾整数之前的整数

事实上,有一个东西是指向整数数组的指针,它有自己的语法,例如int*p[10];这有它自己的意思,但这是另一个问题的主题

星形运算符只能用于阵列吗

星形运算符用于引用指针的值和末端,用于读取或写入

因此,虽然它可以方便地访问值的序列数组,但它也可以用于访问单个值以获得通过引用传递的语义

当编译器读取int*p时,它在做什么

这将设置一个名为p的变量,该变量是指向整数的指针

它是否假定p将成为指向整数数组的指针

没有

p可以只指向一个整数,尽管可以使用后面或前面的指针值访问后面甚至前面的整数值。所以它也可能指向整数数组的第一个元素

*p或p[0]将返回指针末尾的整数

*p+1或p[1]将在指针末尾的整数之后立即返回整数

*p-1或p[-1]将返回指针末尾整数之前的整数

事实上,有一个东西是指向整数数组的指针,它有自己的语法,例如int*p[10];这有它自己的意思,但这是另一个问题的主题

星形运算符只能用于阵列吗

星形运算符用于引用指针的值和末端,用于读取或写入


因此,虽然它可以方便地访问值序列数组,但它也可以用于访问单个值以获得按引用传递语义。

常规int*指针指向内存地址,如果有单个值或数组,则不需要考虑指针,这是程序员关心的问题。所以它不能指向非数组对象?解析器将p标识符添加到符号表中。仅此而已。看到下面aix的答案,他说得更清楚了。一个常规的int*指针指向一个内存地址,如果只有一个值或一个数组,则不需要指针,这是程序员关心的问题。所以它不能指向非数组对象?解析器将p标识符添加到符号表中。仅此而已。请看下面aix的答案,他说得更清楚了。它也可能是很多其他东西,例如,如果下一行恰好是一个函数,那么没有分号p也可能是一个函数。但是,它也可能是很多其他东西,如果下一行恰好是一个函数,那么没有分号p也可能是一个函数。