数组和指针
两个很烦的东西。我在这两篇文章里面有对这些问题的详细描述。
把数组、结构体等都看成是一种数据类型!
关于指针的知识回顾
C/C++ 变量的本质及数据类型杂记
其实在前面的文章里面关于这两个知识点解释的很清楚,但是文章太长,很多人懒得看。在这里就这两个问题,重点解释一下。
指针数组
它是一个数组,指针只是一个修饰词。
就像这句话,一朵美丽的花,首先它是花,美丽的是修饰词。
int main() {
int* pa[5]; //pa是数组,每个元素都是指向整型的指针。
//这个样子定义的就是指针数组。
int a1 = 1;
int a2 = 2;
int a3 = 3;
int a4 = 4;
int a5 = 5;
pa[0] = &a1; //给每个元素赋值。
pa[1] = &a2;
pa[2] = &a3;
pa[3] = &a4;
pa[4] = &a5;
for (auto p : pa) {
cout << *p << endl;
}
return 0;
}
输出是:
数组指针
它是一个指针,指向一个数组。
int main() {
int a[5] = { 1,2,3,4,5 };
int(*pa)[5]; //pa是指针,指向一个数组。这个数组是由5个整型元素组成的。
//这个样子的就是一个数组指针。
cout << a << endl;
cout << &a[0] << endl;
pa = &a; //a是第一个元素的地址,这里取的是第一个元素的地址的地址,即数组的地址。
for (int i = 0; i < 5; i++) {
cout<< *(*pa + i)<<endl;
}
return 0;
}
输出是:
总结
int* pa[5]; //pa是数组,每个元素都是指向整型的指针。
//这个样子定义的就是指针数组。
int(*pa)[5]; //pa是指针,指向一个数组。这个数组是由5个整型元素组成的。
//这个样子的就是一个数组指针。