[C语言高手秘籍]指针数组与数组指针的区别

十年开发一朝灵 2024-09-13 16:24:37

在C语言中,“指针数组”和“数组指针”这两个概念虽然听起来相似,但实际上它们是完全不同的。下面我会详细解释这两种类型的区别,并给出相应的示例代码。

指针数组

指针数组是一个数组,它的每一个元素都是一个指针。通常用于存储多个指向不同类型数据的指针。例如,一个指针数组可以存储多个指向字符串的指针。

示例代码:

#include <stdio.h>

#include <stdlib.h>

int main() {

char *stringArray[3]; // 指针数组定义

stringArray[0] = "Hello";

stringArray[1] = "World";

stringArray[2] = "C Language";

for (int i = 0; i < 3; i++) {

printf("%s\n", stringArray[i]); // 输出字符串

}

return 0;

}

数组指针

数组指针是一个指针,它指向一个数组的起始位置。这个指针可以被用来访问整个数组,就像数组名一样,但提供了更多的灵活性,因为它可以被重新赋值指向其他的数组。

示例代码:

#include <stdio.h>

int main() {

int array[3] = {1, 2, 3}; // 普通的整数数组

int (*arrayPtr)[3]; // 数组指针定义

arrayPtr = &array; // 数组指针指向数组

for (int i = 0; i < 3; i++) {

printf("%d\n", (*arrayPtr)[i]); // 输出数组元素

}

return 0;

}

区别总结:

1. 类型定义:

- 指针数组 的定义看起来像 `type *arrayName[size];`,其中 `type` 是指针所指向的类型,`size` 是数组的大小。

- 数组指针 的定义看起来像 `type (*pointerName)[size];`,这里的 `pointerName` 是指向数组的指针。

2. 用途:

- 指针数组 常用于存储多个同类型数据的指针,如存储多个字符串的指针。

- 数组指针 主要用于指向某个具体的数组,使得可以使用指针来访问和修改数组的内容。

3. 操作方式:

- 对于 指针数组,`arrayName[i]` 会得到第 `i` 个元素的指针。

- 对于 数组指针,`*arrayPtr` 会得到数组的首地址,`(*arrayPtr)[i]` 或 `arrayPtr[i]` 会得到数组的第 `i` 个元素。

0 阅读:5

十年开发一朝灵

简介:感谢大家的关注