File : pointer and array.cpp
Type : c/c++
Brief : pointer and array
/*
int* a[4] 指针数组
表示:数组a中的元素都为int型指针
元素表示:*a[i] *(a[i])是一样的,因为[]优先级高于*
int (*a)[4] 数组指针
表示:指向数组a的指针
元素表示:(*a)[i]
*/
#include <iostream>
using std::cout;
using std::endl;
int main()
{
int a[5] = {1, 2, 3, 4, 5}; // int数组,元素是int数据
int (*b)[5]; // 数组指针
b = &a; // 指向长度为4*5byte 的 int数组
int* c[10]; // 指针数组
c[1] = new int[100]; // 元素 是 指针
cout << (*b)[2] << endl; // *b 是 数组首地址,则b 是二级地址,即二级指针
cout << *((*b) + 1) << endl;
cout << endl;
cout << &a[0] << endl; // 数组首元素a[0]的地址,即为数组首地址
cout << a << endl; // 数组名a为指针常量,其值为a[0]的地址
cout << &a << endl; // 对于数组名,&a操作符返回的数组指针(*)[5],不是二级指针
cout << sizeof(a) << endl; // 对于数组名,sizeof操作符返回的数组的长度
cout << b << endl;
cout << endl;
cout << a + 1 << endl; // 步长为4byte(int)
cout << &a[0] + 1 << endl; // 步长为4byte(int)
cout << &a + 1 << endl; // 步长为整个数组
cout << b + 1 << endl; // 步长为整个数组
return 0;
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]