C语言--对数组地址的解析
2013-07-29 13:54
281 查看
在C编程中,我们进程会用到数组,这看起来很简单,因为,数组就是存储相同类型元素的集合嘛,不过,当你还没考虑到数组的地址问题时,一切都是简单的,如果你接触了数组中的地址概念,也许你会改变你的想法。
下面,我列出几个例子,看看这些例子输出的会是什么:
首先给出数组的定义:int a[10];
1. cout<<a<<endl;
2. cout<<&a<<endl;
3. cout<<a +1<<endl;
4. cout<<&a +1<<endl;
是不是有点迷惑了?
好吧,现在,我来一一解释这些东西:
1.cout<<a<<endl;
当我们定义了一个数组时,我们给数组起了一个名字,叫做“a”,那么a指代的就是系统给我们分配的那一块内存(这个例子中是40个字节),那么自然而然,a代表的就是这块内存的起始地址
2. cout<<&a<<endl;
很明显,这是一个意思,对a进行取地址操作,得到的仍然还是那块内存的起始地址
3. cout<<a + 1<<endl;
这时,我们对起始地址进行加1操作,判断结果是什么,我们需要知道a能存储的是什么类型的数据,对于这个例子,a中存储的整型数据,所以,它指代的是a中第二个元素的地址值,是对于起始地址加4个字节的结果值
4. cout<<&a + 1<<endl;
这个可能是最难理解的一句话,我们在想得到结果之前,还需要看a代表的是什么,a代表的是能存储10个整型变量的一段内存,所以,对&a进行加1操作,得到是下一个能存储10个整型变量的内存的首地址
下面,给出测试的代码和效果截图:
看看结果,是不是和我说的一样。
下面,我列出几个例子,看看这些例子输出的会是什么:
首先给出数组的定义:int a[10];
1. cout<<a<<endl;
2. cout<<&a<<endl;
3. cout<<a +1<<endl;
4. cout<<&a +1<<endl;
是不是有点迷惑了?
好吧,现在,我来一一解释这些东西:
1.cout<<a<<endl;
当我们定义了一个数组时,我们给数组起了一个名字,叫做“a”,那么a指代的就是系统给我们分配的那一块内存(这个例子中是40个字节),那么自然而然,a代表的就是这块内存的起始地址
2. cout<<&a<<endl;
很明显,这是一个意思,对a进行取地址操作,得到的仍然还是那块内存的起始地址
3. cout<<a + 1<<endl;
这时,我们对起始地址进行加1操作,判断结果是什么,我们需要知道a能存储的是什么类型的数据,对于这个例子,a中存储的整型数据,所以,它指代的是a中第二个元素的地址值,是对于起始地址加4个字节的结果值
4. cout<<&a + 1<<endl;
这个可能是最难理解的一句话,我们在想得到结果之前,还需要看a代表的是什么,a代表的是能存储10个整型变量的一段内存,所以,对&a进行加1操作,得到是下一个能存储10个整型变量的内存的首地址
下面,给出测试的代码和效果截图:
#include <iostream> using namespace std; int main(void) { int a[10]; cout<<a<<endl; cout<<&a<<endl; cout<<a + 1<<endl; cout<<&a + 1<<endl; system("pause"); return 0; }
看看结果,是不是和我说的一样。
相关文章推荐
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言 内存分配 地址 指针 数组 参数 解析
- C语言--对数组地址的解析
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言 内存分配 地址 指针 数组 参数 实例解析 (C语言复习)
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言 内存分配 地址 指针 数组 参数 实例解析
- 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析
- 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言 内存分配 地址 指针 数组 参数 实例解析
- c语言中取地址解析
- C语言--对数组地址的解析
- C语言的数组名和对数组名取地址
- 如果改变了形参数组的值 从而在调用函数期间 形参数组就和实参数组共占同一段内存单元 为什么形参数组从实参数组那里得到起始地址后 请问各位C语言高手:当用数组名作函数参数时 也就该变了实参数组的值
- c语言中数组名代表数组首地址,它的值在运行期间可以改变吗?
- C语言 数组名不是首地址指针
- C语言 对数组名取地址