摘要:
这里 &a[0] 和 &a 到底是什么区别呢? a[0]是一个元素,a是整个数组,虽然&a[0] 和 &a 的值一样,但其意义不一样。前者是数组首元素的首地址,而后者数数组的首地址。 举个例子:湖南的省政府在长沙,而长沙的市政府也在长沙。两个政府都在长沙,但其代表的意义完全不同。 阅读全文
摘要:
假设现在需要往内存地址0x12ff7c上存入一个整型数0x100,那么怎样才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质不就是一个指针嘛,所以我们可以用下面的方法: int *p = (int *)0x12ff7c; *p = 0x100; 阅读全文
摘要:
很多初学者搜无法分清这两者之间的区别。先看下面的代码: int *p = NULL; 这时候我们可以通过调试器查看p的值为0x00000000。这句代码的意思是:定义一个指针变量p,其指向的内存里面保存的是int类型的数据;在定义变量p的同时,把p的值设置为0x00000000,而不是把*p的值设置 阅读全文
摘要:
指针变量p前的“*”号作用? 这里这个“*”号怎么理解呢?举个例子:当你回到家门口时,你想进屋第1件事就是拿出钥匙来开锁,试想防盗门的锁芯是不是很像这个“*”号?你要进屋必须要用钥匙,试想防盗门的锁芯是不是很像这个“*”号?你要进入必须要用钥匙,那你去读/写一块内存是不是也要一把钥匙呢?这个“*”号 阅读全文
摘要:
指针的内存布局 先看下面的例子 int *p; 大家都知道这是定义了一个指针p,但是p到底是什么东西呢?还记得第1章里说过“任何数据类型我们都可以把它当成一个模子”吗?p,毫无疑问,是某个模子“咔”出来的。我们也讨论过,任何模子都必须有特定的大小,这样才能“咔咔咔”。那“咔”出p这个模子到底是什么样 阅读全文