指针与内存
来源:互联网 发布:淘宝网店加盟代理 编辑:程序博客网 时间:2024/06/08 02:47
内存:
windows下双击某个可执行程序,发生了:
1.程序要进行的操作对应的代码被装载到代码区;
2.全局和静态数据等待装载到数据区;
3.开辟堆栈,供临时变量使用
内存中数据可以是操作,也可以是数据
变量是对程序中数据存储空间的抽象
void main(){ int a[5]={1,2,3,4,5}; printf("%x,%x",a,&a); //32位系统下 printf("\n%d,%d",sizeof(*a),sizeof(*(&a)));//4,20
*(&a):指向整个数组;
int (*pa)[5]=&a; //指向数组的指针
int *p=a;//指向元素的指针
*a:指向的是第一个元素
指针与二维数组
在二维数组中,a &a a[0] &a[0] *a ,都是一样的值,解析方式不一样;
二维数组名是一个数组指针,即指向数组第一行数组首地址的指针,它实际上也是一种指针类型,类似于函数指针,如int (*prr)[3](括号不能省略,否则成为了指针数组。指针数组是数组类型,代表数组的每一个元素的指针类型 ,声明如下 int *prr[3])
int main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; printf("%d,%d\n",a,*a); //1379961088,1379961088 printf("%d,%d\n",a[0],*(a+0)); //1379961088,1379961088 printf("%d,%d\n",&a[0],&a[0][0]); //1379961088,1379961088 printf("%d,%d\n",a[1],a+1); //1379961104,1379961104 printf("%d,%d\n",&a[1][0],*(a+1)+0); //1379961104,1379961104 printf("%d,%d\n",a[1][0],*(*(a+1)+0)); //9,9 printf("%d,%d\n",a[2],*(a+2)); //1379961120,1379961120 printf("%d,%d\n",&a[2],a+2); //1379961120,1379961120 printf("%d,%d\n",*a[2],*(*(a+2)+0)); //17,17 return 0;}
a,&a,*a值都是相同的,都是数组的首地址;
在二维数组中:
如 int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}
一维数组中
int b[]={1,2,3,4}; printf("\n%d",((*b)+1)); //2 printf("\n%d\n",((*b)+2)); //3 printf("\n%d",(*(b+1))); //2 printf("\n%d",*(&(b[1]))); //2
b+i指向b[i]*b解引用一维数组得到值一维数组和二维数组中,
二维数组实际上是个指针数组,二维数组**a(二次解引用)得到值,一维数组*a得到值
int iArr[2][3]={0,1,2,3,4,5};int *p=iArr[0];printf("%d\n",p[3]); //3printf("%d\n",*(p+3)); //3
int **pp=iArr; //报错,无法从int[2][3]转换成int **int (*pp2)[3]=iArr; //行指针int *pp3=iArr[0]; //列指针 *(pp3+1); //移动到下一列(列指针一次解引用就可以取出值)pp2是一个整行,在指针上加减一个整数都是移动整行,而不是一个元素。比如说,pp2+1代表现在指针移动到下一行了,*(pp2+1)代表取到了这第二行数组,整行元素取到了,要取该行某个元素到话,那么*(pp2+1)+2指针指向了第二行第三个元素到地址,解引用取出来元素的值,*(*(pp2+1)+2)。
1 0
- 指针与内存(一)
- 指针与内存(二)
- 指针与内存(三)
- 内存管理与指针
- 内存单元与指针
- 指针与内存分配
- 指针与内存
- 内存与指针
- 内存与指针
- 图说内存与指针
- 指针与内存分配
- 指针与内存对齐
- 指针与内存管理
- 指针与内存
- 指针与内存
- C指针与内存
- 指针与堆内存
- 10.4 指针与内存
- 深入理解Java:注解(Annotation)自定义注解入门
- 修改Windows2012默认占用启动80端口
- 七段管动态显示00-FF
- 【机器学习实战-python3】使用FP-growth算法来高效 发现频繁项集
- JavaScript实现用户行为跟踪收集
- 指针与内存
- gvim cscope使用
- Angular项目目录结构详解
- [Oracle]Oracle的常用SQL语法
- MXnet报错处理——input image size smaller than input shape
- Java概念性问题2
- php5.3不能连接mssql数据库的解决方法
- MIP、PWA、WebGL、HTTPS,来看Web生态的领先技术
- 前端控制器配置