指向一维数组的指针

先看2个符号:*p[4],(*p)[4]:

这是两个不同的符号,因为[]的优先级高于*,所以*p[4]=*(p[4]),它代表指针数组,在main函数的原型中可以找打char *argv[],这也是一个指针数组。

(*p)[4]代表的是指向一维数组的指针,在函数中,可以作为参数,参看下面的代码:

Code:
  1. #include <stdio.h>   
  2.   
  3. void main()   
  4. {   
  5.     int a[4];   
  6.     int i;   
  7.     void write(int (*p)[4]);   
  8.     write(&a);   
  9.     for(i=0;i<4;i++)   
  10.     {   
  11.         printf("%d/n",a[i]);   
  12.   
  13.     }   
  14.     printf("%d/n",&a);   
  15.     printf("%d/n",a);   
  16.        
  17. }   
  18. void write(int (*p)[4])   
  19. {   
  20.     (*p)[0]=4;   
  21.     (*p)[1]=7;   
  22.     (*p)[2]=3;   
  23.     (*p)[3]=5;   
  24.   
  25. }  

在这个程序中,是将数组a的地址传递给形参指向一维数组的指针p,在程序中,做了一个验证,a,&a,都能代表数组的地址值,但是write(&a);中,如果写成write(a)的话,则会出现警告。所以要是将一个数组传递给指向一维数组的指针,采取取地址的方式。

总结起来:一个数组能够传递的形参有:

int *p:可以将一个数组传给单个指针;

int p[ ]:也可以将数组传给这样的形参;

int (*p)[ ]:指向一维数组的指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值