指针和数组的区别
来源:互联网 发布:计算机前沿技术大数据 编辑:程序博客网 时间:2024/06/08 15:38
在一个项目中定义两个文件
//a.cppint a[3] = { 1, 2, 3 };
//b.cpp#include<stdio.h>extern int *a;//引用a.cpp的数组名a,但是不把它当数组而是当成指针void main(){printf("%d\n", a);printf("%d\n", a + 1);printf("%d\n", *a);getchar();}请问打印的结果是什么???
不用猜了,让我告诉你答案吧。
printf("%d\n", a);
//编译器看来a就是指针,按照指针进行操作。打印其指向的地址,因为指针的大小在32位中是固定大小4字节,所以从a首地址中取4个字节,这里因为数组的每个元素的大小刚好是4个字节,如果不是int数组的话,要考虑下大小端的问题。所以这里是取a[0]的值,最后打印a[0]。也就是说编译器把a[0]看成了一个地址。
printf("%d\n", a + 1);
//编译器上看a是指针,+1是按照int*指针进行加1操作,因为int*的指针每加一就是加4个字节,所以最后打印a[0]+4的值,编译器看来这还是一个地址值。
printf("%d\n", *a);
//解引用即把a保存的地址进行解引用操作。结合第一个问题最后等价于*a[0] 产出程序崩溃,因为解引用了一个保留的内存,被操作系统拒绝
总结:指针就是指针,数组就是数组。两者不可以混用,把指针当数组或者把数组当指针,不然产生意想不到的错误。
阅读全文
0 0
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 数组指针和指针数组的区别
- 指针数组和数组指针的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 数组指针和指针数组的区别
- 指针数组和数组指针的区别
- 数组指针和指针数组的区别
- Mr. Panda and Crystal HDU
- Android AM命令行启动程序的方法
- linux脚本明明定义了变量,但是引用的时候报错(原因:shell定义变量的时候,“等号”两边不要加空格)
- 欣的无线轮播!
- 创建一个用于上传文件的表单
- 指针和数组的区别
- 注释转换—将C语言注释风格转换为C++注释风格
- 【自考】数据结构之思维导图
- 4484: [Jsoi2015]最小表示
- Java4Android笔记之Java中的面向对象基础(四)
- 树莓派内核升级的三种方式
- Spring Boot
- traces.txt文件信息
- Oracle创建表空间、创建用户以及授权