我试图通过从不同的值来回更改所有内容来尝试使用数组和指针,但是此代码带来了错误,无法转换' int()[4 ]'初始化中的int ,这里有什么问题?没有正确宣布?
#include <iostream>
#include <cctype>
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
int anArray[4] = {1, 2, 3, 4};
int* firstPnt = &anArray;
cout << *firstPnt;
}
答案 0 :(得分:2)
当您按名称引用数组时,数组会衰减为基类型的指针。但是,获取它的地址会给出一个指向数组本身的指针。做任何一件事
int (*firstPnt) [4] = &anArray;
或
int *firstPnt = anArray;
前者是指向整个数组的指针,而后者是指向数组中第一个元素的指针。当你对后者进行++firstPnt
时,它将移动到下一个元素,即sizeof(int)
个字节,而在前一种情况下,它将移动sizeof(int[4])
个字节,即到字节在整个数组的最后一个字节旁边。因此,如果您想要访问这些元素,您可以执行(*firstPnt)[0]
,(*firstPnt)[1]
等。
阅读more about array decay以了解这一点。
答案 1 :(得分:0)
删除&符号。
int* firstPnt = anArray;
答案 2 :(得分:0)
你应该做
int* firstPnt = &anArray[0];
或
int* firstPnt = anArray;