高维数组另作整理
在C语言中,数组名本身就是一个指向数组第一个元素的指针。
示例 1: 基本用法
#include <stdio.h> | |
int main() { | |
int arr[] = {1, 2, 3, 4, 5}; | |
int *ptr = arr; // 数组名 arr 是一个指向数组第一个元素的指针 | |
// 通过指针遍历数组 | |
for (int i = 0; i < 5; i++) { | |
printf("arr[%d] = %d\n", i, *(ptr + i)); | |
} | |
return 0; | |
} |
在这个示例中,arr
是一个整数数组,ptr
是一个指向整数的指针,并且被初始化为指向 arr
的第一个元素。然后通过 *(ptr + i)
访问数组中的每个元素。
示例 2: 修改数组元素
#include <stdio.h> | |
int main() { | |
int arr[] = {1, 2, 3, 4, 5}; | |
int *ptr = arr; | |
// 修改数组元素 | |
for (int i = 0; i < 5; i++) { | |
*(ptr + i) = *(ptr + i) * 2; | |
} | |
// 打印修改后的数组 | |
for (int i = 0; i < 5; i++) { | |
printf("arr[%d] = %d\n", i, arr[i]); | |
} | |
return 0; | |
} |
在这个示例中,通过指针 ptr
遍历数组并修改每个元素的值。
示例 3: 函数中通过指针操作数组
#include <stdio.h> | |
// 函数声明,通过指针操作数组 | |
void printArray(int *arr, int size) { | |
for (int i = 0; i < size; i++) { | |
printf("arr[%d] = %d\n", i, *(arr + i)); | |
} | |
} | |
int main() { | |
int arr[] = {1, 2, 3, 4, 5}; | |
int size = sizeof(arr) / sizeof(arr[0]); | |
// 调用函数,传递数组和大小 | |
printArray(arr, size); | |
return 0; | |
} |
在这个示例中,定义了一个函数 printArray
,它接受一个指向整数的指针和一个整数大小,用于打印数组元素。在 main
函数中,将数组 arr
和其大小传递给 printArray
函数。
示例 4: 动态分配数组并通过指针操作
#include <stdio.h> | |
#include <stdlib.h> | |
int main() { | |
int size = 5; | |
int *arr = (int *)malloc(size * sizeof(int)); // 动态分配内存 | |
if (arr == NULL) { | |
printf("Memory allocation failed\n"); | |
return 1; | |
} | |
// 初始化数组 | |
for (int i = 0; i < size; i++) { | |
arr[i] = i + 1; | |
} | |
// 通过指针遍历数组 | |
for (int i = 0; i < size; i++) { | |
printf("arr[%d] = %d\n", i, *(arr + i)); | |
} | |
// 释放动态分配的内存 | |
free(arr); | |
return 0; | |
} |
在这个示例中,使用 malloc
动态分配了一个整数数组,并通过指针 arr
访问和操作数组元素。最后,使用 free
释放了动态分配的内存。