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