1.数组指针:当数组指针指向一个一维数组时,()优先级高,说明p是指针,指向一个整型的一维数组。这个一维数组的长度是n,也可以说p的步长为n。当p+1时,p指针会跨过n个整型数据的长度。
2.指针数组:当定义一个一维数组时,系统会在内存中为改数组分配一个储存空间,其数组的变量名就是数组的首地址。若定义一个指针变量,并将数组的首地址赋值给指针变量,则我们说该指针指向了这个一维数组。
是一个由n个指针类型元素组成的指针数组,或者说这个当一个数组里含有的元素为指针类型的时候,它就被成为指针数组。
#include<iostream> #include<string> using namespace std;int main() { //含有5个整数的数组,元素值分别为1,2,3,4,5 int arr[5] = { 1,2,3,4,5 }; //数组指针,由内向外的顺序,首先p是个指针,指向大小为5的数组的指针 int(*p)[5] = &arr; //指针数组,通过循环将arr数组每行的首地址分别赋值给q里的元素 int* q[5]; for (int i=0;i<5;i++) q[i] = &arr[i]; cout << "arr:" << arr << endl; cout << " &arr[0]" << &arr[0] << endl; cout << "p[0]:" << p[0] << endl; cout << "*p:" << *p << endl; cout << "*p[0]:" << *p[0] << endl; cout << "**p:" << **p << endl; cout << "*************" << endl; cout << "&(p[0]):" << &(p[0]) << endl; cout << "&(*p):" << &(*p) << endl; cout << "*************" << endl; cout << "q[0]:" << q[0] << endl; cout << "&(q[0]):" << &(q[0]) << endl; //访问数组元素 for (auto i : arr) cout << i << endl; for (auto i : q) cout << i << endl; }
输出
当定义一个一维数组时,系统会在内存中为改数组分配一个储存空间,其数组的变量名就是数组的首地址。若定义一个指针变量,并将数组的首地址赋值给指针变量,则我们说该指针指向了这个一维数组。arr[0]的地址也是数组的首地址。
通过循环将arr数组每行的首地址分别赋值给q里的元素,这里int * q[5]表示一个一维数组内存放五个指针变量,q[0]存储的是指向arr[0]的指针,以此类推。
标签:arr,数组,int,C++,地址,一维,指针 From: https://www.cnblogs.com/qhj384343045-/p/18079070