指针带来转换错误C ++

时间:2014-04-02 16:08:26

标签: c++ pointers

我试图通过从不同的值来回更改所有内容来尝试使用数组和指针,但是此代码带来了错误,无法转换' 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;
}

3 个答案:

答案 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;