Qua*_*ale 0 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;
Run Code Online (Sandbox Code Playgroud)
和:
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int *Parr = arr;
Run Code Online (Sandbox Code Playgroud)
两者都是指向整数数组的指针.但是为了访问第arr一个片段中的第一个元素,我必须这样做,**Parr而在第二个元素中,我只需要取消引用一次*Parr
在第一个代码示例中,
int (*Parr)[10] = &arr;
Run Code Online (Sandbox Code Playgroud)
Parr是一个指向10个int数组的指针.它只能指向这样一个对象.例如,
int (*Parr)[10];
int a[10];
Parr = &a; // OK
int b[42];
Parr = &b; // ERROR, b is of the wrong type
Run Code Online (Sandbox Code Playgroud)
在第二个代码示例中,
int *Parr = arr;
Run Code Online (Sandbox Code Playgroud)
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*
Run Code Online (Sandbox Code Playgroud)