C++ Primer Plus 第6版 指针和数组基本等价的原因在于指针算术! 一.指针 ⑴整数变量+1后,其值将增加1: ⑵指针变量+1后,增加的量等于它指向的类型的字节数: ⑶C++将数组名解析为地址: 例如:如果系统对double使用8个字节存储,其数值将增加8, 如果系统对short使用2个字节存储,则指针值将增加2 #include <iostream> int main() { using namespace std; ]={10000.0,20000.0,30000.0};
C++中指针和数组基本等价的原因在于指针算术和C++内部处理数组的方式:将整数变量加一后,其值将增加1:将指针变量加一后,增加的量等于其指向的数据类型的字节数: 指针中存储的是地址,地址在形式上和整数相似,但是意义完全不同,整数可以加减乘除,但地址相乘等操作完全没有意义: Eg: int *p; P = 0xB8000000; 上面会报类型不匹配的错误,原因在于C++不知道这是一个数字还是一个地址,所以需要先进行强制类型转换: 我们常说数组名就是指针,但这么说只是为了理解,准确的说,两者还是有
最近看C++编程思想,看到第十三章动态内存管理的时候把自己给绕进去了,主要是在数据和指针这块弄混了.现在把找到的一些资料总结如下: 1. 数组是数组,指针是指针,两者并不等价: 2.数组在作为左值的时候一般是数组自己,而放在右值往往被转换成一个常量指针: 3.下标运算符其实是针对指针的,只是数组变成指针后也适用于了数组: 4.对数组取地址符在很早以前是错误的,因为数组名本身就是数组的地址,对地址去地址显然不对,后来被C++标准定为合法的,表示指向数组对象的指针. 对于 int a[100]; i
(3)指针和数组 在c中指针和数组似乎有着千丝万缕的关系.事实上它们不是一回事:指针是指针,数组是数组.两者不同样. 说它们有关系,只是是由于常见这种代码: int main() { int array[] = {1,2,3,4,5}; int n = sizeof(array) / sizeof(int); int *p = array; int i; for (i = 0; i < n; i++) printf("p[%d]...%d\n", i, p[i]); system
1.指针数组和数组指针的内存布局 初学者总是分不出指针数组与数组指针的区别.其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定.它是"储存指针的数组"的简称.数组指针:首先它是一个指针,它指向一个数组.在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.它是"指向数组的指针"的简称.下面到底哪个是数组指针,哪个是指针数组呢:A) int *p1[10]; B) int (*p2)[10]; 每次上课问这个