指针和数组的比较
来源:互联网 发布:java数组转换成字符串 编辑:程序博客网 时间:2024/04/29 00:41
- 一.指针和数组的初步了解
- 什么是指针
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,
它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通
过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将
地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。 - 什么是数组
数组就是一段连续可用的内存。
- 什么是指针
指针
int main(){ int a = 10; int* pa = &a; return 0;}
通过这个程序我们可以发现,先定义一个整形变量a,然后定义一个整形指针变量pa来指向a。通过对程序进行运行,我们找到内存中变量a,&a找到a,发现a存储在为0x0031FC80地址中。
然后我们在以相同的方式找到指针变量pa。
我们不难发现,指针pa保存的是指向a的地址。如图所示
在通过下一个程序进行比较
int main(){ char b = 'a'; char* pb = &b; return 0;}
这次定义的是一个字符型变量b,在定义一个字符变量的指针用来指向他。打开内存&b,这次b所占字节为1。
然后&pb,我们发现不同的是,pb所占内存为4个字节。
如图所示
我们把 pa、pb称为指针变量,指针里存储的内存地址处的内存称为指针所指向的内存。指针变量里存储的任何数据都将被当作地址来处理。我们可以简单的这么理解:一个基本的数据类型(包括结构体等自定义类型)加上“”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“”号前面的数据类型无关。“*”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32 位系统下,不管什么样的指针类型,其大小都为 4byte。只是其一次能够访问的长度为类型的长度。
数组
1.一维数组
int main(){ int a[5] = {1,2,3,4,5}; int i = 0; for (i = 0; i < sizeof(a)/sizeof(a[0]); i++) { printf("a[%d]=%p\n", i, &a[i]); } return 0;}
通过对程序运行
通过图示,我们知道一维数组在内存中的分布。
2.二维数组
int main(){ char a[3][4] = {'a','b','c','d','e','f','g','h','i','j','k','l'}; int i = 0; int j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { printf("a[%d][%d]=%p\n", i,j, &a[i][j]); } } return 0;}
通过对代码的运行。
通过图示,我们知道二维数组在内存中的分布。
- 二. 指针和数组的区别
如有错误,欢迎指出!
阅读全文
1 0
- 指针和数组的比较
- 数组和指针的比较
- 指针和数组比较
- 二级指针和二维数组的比较
- 数组指针与指针数组的比较
- 数组和指针的比较和关系以及区别
- 指针与数组的比较
- 指针与数组的比较
- 引用字符串时 指针和数组的比较
- 使用字符指针变量和字符数组的比较
- C++中引用,指针和数组的比较
- C语言:理解数组指针和指针数组比较好的例子
- 数组 指针比较 直接寻址和间接寻址 数组和指针在编译的时候的区别
- 数组 指针比较 直接寻址和间接寻址 数组和指针在编译的时候的区别。。。
- C++指针数组与数组指针的比较
- C++指针数组与数组指针的比较(二)
- 数组的递进理解——由一维到多维,数组和指针的关系比较等
- 数组指针、 指针数组、函数指针、函数指针数组和指向函数指针数组的指针
- 十五、总结
- Jungle Roads (Kruskal)
- JavaScript_Window对象和Document对象
- 循环语句
- matlab 文件夹下指定文件拷贝(简单通配符)
- 指针和数组的比较
- 0729-Java循环结构
- 我与Bloom filter
- JavaScript高级程序设计-学习笔记3
- 2017年7月31日21:28:10
- Android蓝牙实现设备间数据传输
- JavaScript中的创建对象方式
- java 双亲委派模型
- (源码阅读)Resources资源加载流程