c语言中数组指针和指针数组区别并举代码例子
时间: 2023-09-04 10:13:09 浏览: 139
在C语言中,数组指针和指针数组是两种不同的概念。下面我将为您提供一些代码例子来说明它们之间的区别。
1. 指针数组示例:
```c
#include <stdio.h>
int main() {
int a = 10, b = 20, c = 30;
int *arr[3]; // 声明一个指针数组
arr[0] = &a; // 数组的第一个元素指向变量a
arr[1] = &b; // 数组的第二个元素指向变量b
arr[2] = &c; // 数组的第三个元素指向变量c
for (int i = 0; i < 3; i++) {
printf("arr[%d] = %d\n", i, *arr[i]); // 打印数组元素的值
}
return 0;
}
```
输出结果:
```
arr[0] = 10
arr[1] = 20
arr[2] = 30
```
在上述代码中,我们声明了一个指针数组`arr`,其中的每个元素都是一个指向`int`类型的指针。然后,我们将变量`a`、`b`和`c`的地址分别赋给了数组的元素。最后,通过循环遍历数组,并使用解引用操作符`*`来获取数组元素所指向的值。
2. 数组指针示例:
```c
#include <stdio.h>
int main() {
int arr[3] = {10, 20, 30};
int (*ptr)[3]; // 声明一个数组指针
ptr = &arr; // 数组指针指向数组arr的地址
for (int i = 0; i < 3; i++) {
printf("(*ptr)[%d] = %d\n", i, (*ptr)[i]); // 通过数组指针访问数组元素的值
}
return 0;
}
```
输出结果:
```
(*ptr)[0] = 10
(*ptr)[1] = 20
(*ptr)[2] = 30
```
在上述代码中,我们声明了一个数组`arr`,并初始化了它的元素。然后,我们声明了一个数组指针`ptr`,并将数组`arr`的地址赋给了它。通过在指针前加上括号,我们可以使用解引用操作符`*`来访问数组元素的值。
总结来说,指针数组是一个数组,其中的每个元素都是指针,而数组指针是一个指向数组的指针。它们在使用方法和语义上有所区别。
阅读全文