C语言中的数组指针与指针数组的具体区别

本文详细解释了指针数组`int*a[3]`和数组指针`int(*a)[3]`的概念,通过实例展示了它们在C语言中的用法。指针数组是整型指针构成的数组,而数组指针指向一个整数数组。自定义数组类型和typedef的应用也进行了深入剖析。
摘要由CSDN通过智能技术生成

int *a[3]:为什么这里是指针数组,[] 的优先级高于 * ,所以这是一个数组,而 * 修饰数组,所以是指针数组,数组的元素是整型的指针。

示例:

int main() {     
   char *str[3];     
   str[0] = "abc";     
   str[1] = "efg";     
   str[2] = "hij";     
   for (int i = 0; i < 3; ++i) {         
      printf("%s\n", str[i]);     
   } 
}

结果:

abc 
efg 
hij

数组指针

int (*a)[3]:同样的方式,首先括号的优先级最高,所以 *a 是指针,而 [] 修饰 *a ,所以是数组指针,一个指向 3 个元素的一维数组指针。

示例:

typedef int arr[3]; 
int main() {     
   arr b = {1, 2, 3};     
   int (*a)[3] = &b;     
   arr *c = a;     
   for (int i = 0; i < 3; ++i) {         
      printf("%d\n", (*a)[i]);     
      
   } 
}

结果:

1 
2 
3

解析:

这里使用 typedef。我们自定义了一个数据类型,为数组数据类型。起数据类型为三个整型元素的数组。

定义数组指针也有两种方式,一个是使用我们上面自定义的数组数据类型,一个是直接定义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值