C 数组与指针的一些理解

int (*func)(double)  func is a pointer  to function (double)  returning int

int hoge [3][10]   hoge is array of array  of int    hoge是int数组(有10个)的数组(有三个)

int *hoge[10]  hoge is array(10) of pointer to int

int func(int)  func is function(int) returning int



指向数组的指针


int array[3]:                    

 int (*array_p)[3]

array是数组,array_p是指针,

&array取的“指向数组的指针”,所有可以 array_p=&array  ,类型相同


“指向int的指针”和“指向int数组的指针”是两种完全不一样的类型,虽然array和&array指向同一地址,但是做指针运算的时候,结果不同

int main(int argc, char *argv[]) {

int array[3]={1,2,3};
int (*array_p)[3] = {4,5,6};
printf("%d\n",*(array+1));
printf("%d\n",*(&array+1));
return 0;
}

结果:

2
10485308

----------------------------------------------------------

array是指向int的指针,array+1只加4个字节

&array是指向int数组的指针,&array+1加4*3=12个字节


多维数组:

其实C中不存在多维数组,存在是的数组的数组。

int hoge[i][j]   int hoge[2][3]

hoge[i] 是 int数组(个数为3)的数组(个数为2)中的第i个元素,所以hoge[i]可以理解为指向int的指针。

在数组做为参数传递的时候,一维数组 int array[3] ,因为在传递的时候,数组可以解释成指针,所以是指向int的指针, void function(int * array)

所以对于二维数组 int array_p[2][3],int 数组(个数3)的数组(个数2),将后面看成指针,所以是 指向 int数组(数组元素个数为3)的指针,所以是

void function(int (* array_p)[3]),也可以写成 void  function(int array[2][3])or  void function (int array[][3])


该文内容基本来源于《征服C指针》







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值