为什么int *arr;与int arr[];是等价的
时间: 2024-05-20 09:13:50 浏览: 12
在函数参数中,`int *arr` 和 `int arr[]` 是等价的,因为在函数调用时,数组名会被自动转换为指向数组首元素的指针,因此 `int arr[]` 会被转换为 `int *arr`。在变量定义中,它们也是等价的,因为数组名 `arr` 实际上是一个指向数组首元素的指针,所以 `int *arr` 和 `int arr[]` 都声明了一个指向 int 类型的指针。其实,`int arr[]` 的本质是 `int *arr`,但是为了让代码更加清晰易懂,一般使用数组形式来声明。
相关问题
typedef int INTARR3[3]
这是一个定义了名为 INTARR3 的类型的语句,它是一个由三个 int 类型元素组成的数组类型,等价于以下语句:
```
typedef int INTARR3[3];
int arr[3]; // 声明一个 INTARR3 类型的数组
```
这样定义后,我们就可以使用 INTARR3 来代替 int[3],使代码更加清晰易读。
int [] arr和int arr[]的区别
在C语言中,int [] arr和int arr[]是等价的,它们都表示一个整型数组。这种声明方式是C语言特有的一种语法糖,目的是让数组声明更加灵活和便捷。因此,在使用时可以根据个人习惯选择其中的一种方式进行声明。但需要注意的是,在初始化数组时,只有int arr[]才能使用类似于int arr[]={1,2,3};这样的方式进行初始化,而int [] arr则需要使用int arr[3]={1,2,3};这样的方式进行初始化。