c++ - 指向整数数组的指针

标签 c++ c arrays pointers

有什么区别:

//Example of "Complicated Array Declarations" from C++ Primer
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int (*Parr)[10] = &arr;

和:

int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int *Parr = arr;

两者都是指向整数数组的指针。但是为了在第一个片段中访问 arr 的第一个元素,我必须执行 **Parr 而在第二个片段中,我只需要取消引用一次 *帕尔

最佳答案

在第一个代码示例中,

int (*Parr)[10] = &arr;

Parr 是一个指向包含 10 个整数的数组的指针。它只能指向这样一个对象。例如,

int (*Parr)[10];
int a[10];
Parr = &a; // OK
int b[42];
Parr = &b; // ERROR, b is of the wrong type

在第二个代码示例中,

int *Parr = arr;

Parr 是指向int 的指针,初始化为指向arr 的第一个元素。但它可以指向任何 int

int* Parr;
int a[10];
Parr = &a; // OK, a decays to int*
int b[42];
Parr = &b; // OK, b decays to int*
int c = 42;
Parr = &c; // OK, c is an int*

关于c++ - 指向整数数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26173733/

相关文章:

c++ - C++中指针结构的运算符重载

python - 在带有防火墙的 Windows 上手动安装 pyodbc

c++ - STL 从文件中读取

c - 标记多个字符串 C

用 C 语言与纯数据通信

python - 不同大小数组的 Numpy 运算

php - 如何检查与php中的随机字符匹配的数组数据?

python - 使 3-d numpy 数组的每个第 n 个切片连续

c++ - 链接列表队列号移动

c - 在 fork() 之后打印子编号