多维数组和多维指针
1.指针变量在内存中会占用一定的空间
2.可以定义指针来保存指针变量的地址值
3.指针在本质上也是变量,对于指针也同样存在传值调用与传址调用
#include<stdio.h>#include<malloc.h>intreset(char**p,intsize,intnew_size){intret=1;inti=0;intlen=0;char*pt=NULL;char*tmp=NULL;char*pp=*p;if((p!=NULL)&&(new_size>0)){pt=(char*)malloc(new_size);tmp=pt;len=(size<new_size)?size:new_size;for(i=0;i<len;i++){*tmp++=*pp++;}free(*p);*p=pt;}else{ret=0;}returnret;}intmain(){char*p=(char*)malloc(5);printf("%0X\n",p);if(reset(&p,5,3)){printf("%0X\n",p);}return0;}
二维数组与二级指针
1.二维数组在内存中以一维的方式排布
2.二维数组中的第一维是一维数组
3.二维数组中的第二维才是具体的值
4.二维数组的数组名可看做常量指针
5.二维数组名代表一个数组指针,二维数组可以看做一维数组,二维数组中的每个元素都是同类型的一维数组。
#include<stdio.h>intmain(){inta[5][5];int(*p)[4];//数组指针p=a;printf("%d\n",&p[4][2]-&a[4][2]);//偏移18减去偏移22}
总结:
1.C语言中只有一维数组,而且数组大小必须在编译期就作为常数确定
2.C语言中的数组元素可是任何类型的数据,即数组的元素可以是另外一个数组
3.C语言中只有数组的大小和数组首元素的地址是编译器直接确定的
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。