数组占据内存中一块连续的存储空间,每个数组元素都有
确定的内存地址;可通过定义指向数组元素类型的指针变
量,间接访问数组中的各个元素
C++语言规定,数组名代表数组的首地址(即数组中第一个
元素的地址),它是一个常量指针
如:int a[10], *p=a;
说明a是一个整型数组,p是一个整型的指针变量,且p指
向a数组,其中a为数组名,代表数组的首地址,即&a[0]
- 指针±整数 ==》指针
假设:int a[10]={10,20,30},*p=a
p+i:表示p所指元素之后的第i个元素的指针
p-i:表示p所指元素之前的第i个元素的指针
int a[10] = {10, 20, 30} int *p = a; int i; cout << *p << endl; // 10 p++; // p 指向a[1] cout << *p << endl; // 20 p++; // p 指向a[2] cout << *p << endl; // 30
两个同类型的指针做减法运算注意
指针的算术运算与数学中运算不同。如 p的初值为a[0]的址,即1000, 执行p++后,p将指向a[1]元素,这时p的值为1004,而不是1001。
实际上,在C++中指针的算术运算与指针指向的变量类型有关,如p指向int型,因int型变量为4字节长度,所以,p+1相当于p+4,同样p+i相当于p+i*4。如果是double类型,则+8
指针2-指针1 ==>整数
常用于计算两个指针之间包含元素的个数。计算方法:
指
针
2
−
指
针
1
元
素
的
字
节
长
度
frac{指针2-指针1}{元素的字节长度}
元素的字节长度指针2−指针1
如:p1,p2是整型指针,p1中的地址为1000,p2中的地
址为1008。那么p2-p1,相当于(1008-1000)/4,结果为2,说明p1到p2之间包含2个元素。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)