当前位置: 首页 > 工具软件 > c > 使用案例 >

c_5:c数组

阎阳
2023-12-01

一维数组

int a[10];
int *c;
c=&a[0]  //&a[0]是指向数组第一个元素的指针
array[i]=*(array+i)
&array[i]=array+i=array[0]+i

--------------------------------------
--------------------------------------
int array[10];
int *ap=array+2;  // ap指向array[2]

ap //&array[2]
*ap //*(array+2)
ap[0]=*(ap+0)=*ap //c语言的下标和简接访问一样
ap+6 //ap[2+6]=ap[8]
*ap+6 //array[2]+6
ap[6]  //*(ap+6)
ap[-1]  //上一个元素

指针和数组

int i[]={100,200,300,400,500};
int *pi=i;  // pi指向i[0]=100的地址
*pi++   //*和++优先级相同,自右向左----->*pi++=*(pi++)----->*pi=100,输出100,然后pi指向下一个地址
*++pi  //---->*(++pi)---->pi移到下一个单元----->输出300
++ *pi //---->300+1

二维数组

[] <script type="math/tex" id="MathJax-Element-2">*</script>等价

int i[7]={0,1,2,3,4,5,6}
int *ptr=i;

则:*(i+2)=i[2]=*(ptr+2)=ptr[2]
//二维数组
int j[2][3]={0,1,2,3,4,5}
=>
j[1][2]=*(*(j+1)+2)
j+1=*(j+1)=j[1]=>下一个一维数组的首地址(j和j+1都是指向包含10个元素的数组的指针)
*(j+1)+5=>一维数组的第5个元素

指向数组的指针

int (*p)[10]  //避免使用

指针数组

char *parr[4]={"Department","of","Information","Managment"}

//操作符 []和*
**parr=*parr[]=parr[][]
 类似资料: