数组名与指针
来源:互联网 发布:用vb设计计算机程序 编辑:程序博客网 时间:2024/04/26 07:53
数组名和指针的概念很容易搞混淆,比如函数传参的时候,数组名作为形参,但是进去用的时候却和指针用法一摸一样,但是sizeof(数组名)大小却不等于指针的大小(数组size不为1)。并且数组名不能用 自加运算符,说明他应该是一个“常量”。
直接通过反汇编来看看数组具体是怎么定义的吧:
#include <stdio.h>#include <string.h>int a[3] = {1,2,3};int main(){ return 0;}
上面定义了一个全局数组变量a ,下面是它的反汇编结果。
.globl a //申明全局变量 a .align 4 //对齐为4 .size a, 12 //a 的大小是 12a: .long 1 //初始化 a .long 2 .long 3 .globl mainmain:
通过反汇编后,数组名的含义也就非常清晰了,它就是一个变量名,它本身并不占用内存!!它的形式是一个标号,并且给它的size属性设置为12 ,所以sizeof(a) = 12 . &a 便得到这12个内存的首地址。
汇编里面标号就是一个地址,但是这个地址是由编译器来记住的,我们想访问这个地址的时候,由编译器来翻译这个标号为地址。我们将数组名作为参数传给函数的时候,其实是传的一个地址过去(也可以理解为标号地址的拷贝),也就是一个指针了,所以我们在函数里可以对这个传进来的数组名进行指针的操作。
还有一个问题就是,我们对数组名正常访问的时候,数组名是不能自加的,也就可以解释了,它是一个标号,可以理解为一个常量指针,是一个不变的地址。
阅读全文
0 0
- 数组名与指针
- 数组名与指针
- 数组名与指针
- 数组名与指针
- 数组名与指针
- 指针与数组名
- 数组名与指针
- 数组名与指针
- 数组名与指针
- 指针与数组名
- 指针与数组名
- 数组名与指针
- 数组名与指针
- 指针与数组名
- 数组名与指针
- 数组名与数组指针
- 引用、指针与数组名
- 数组名与指针区别
- HDOJ-2602 Bone Collector(背包DP)
- 关于虚拟机VM0,1,8的总结以及宿主机无法ping通虚拟机和虚拟机无法ping通外网的问题总结
- 欢迎使用CSDN-markdown编辑器
- 目前java序列化流行的编解码框架
- 橘子粑粑(java)基础之计算机
- 数组名与指针
- java语法学习笔记
- Makfile 应用进阶实例
- CF 803C Maximal GCD 枚举,构造
- Android TV 悬浮球模拟物理按键
- 运放带宽
- css效果实现一个物体的旋转小demo
- 记录——不平庸的十一月
- 服务亿级图片压缩那些事