C语言菜鸟教程:数组指针
基本用法
示例代码:
#include <stdio.h>
// 打印二维数组
void printArr2(int arr2[2][2]) {
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
printf("%d ", arr2[i][j]);
}
printf("\n");
}
printf("======\n");
}
int main() {
int arr[2][2] = {1, 2, 3, 4};
printArr2(arr);
// 定义数组指针
// 这里的p表示的是一个二维数组
int (*p)[2] = arr;
printArr2(p);
return 0;
}
输出:
1 2
3 4
======
1 2
3 4
======
通过数组指针将二维数组转换为一维数组
示例代码:
#include <stdio.h>
// 打印二维数组
void printArr2(int arr2[2][2]) {
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
printf("%d ", arr2[i][j]);
}
printf("\n");
}
printf("======\n");
}
// 打印一维数组
void printArr(int arr[4]) {
for (int i = 0; i < 4; ++i) {
printf("%d ", arr[i]);
}
printf("\n======\n");
}
int main() {
int arr[2][2] = {1, 2, 3, 4};
printArr2(arr);
// 通过数组指针将二维数组装换为一维数组
int *pa = (int *) arr;
printArr(pa);
return 0;
}
输出:
1 2
3 4
======
1 2 3 4
======
优化一维数组打印方法
示例代码:
#include <stdio.h>
// 打印二维数组
void printArr2(int arr2[2][2]) {
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
printf("%d ", arr2[i][j]);
}
printf("\n");
}
printf("======\n");
}
// 打印一维数组
// 优化1:将参数转换为指针类型
// 优化2:传入数组长度
void printArr(int *arr, int size) {
for (int i = 0; i < size; ++i) {
printf("%d ", arr[i]);
}
printf("\n======\n");
}
int main() {
int arr[2][2] = {1, 2, 3, 4};
printArr2(arr);
// 通过数组指针将二维数组装换为一维数组
int *pa = (int *) arr;
printArr(pa, 4);
return 0;
}
输出:
1 2
3 4
======
1 2 3 4
======
自动计算二维数组的总元素个数
示例代码:
#include <stdio.h>
// 打印二维数组
void printArr2(int arr2[2][2]) {
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
printf("%d ", arr2[i][j]);
}
printf("\n");
}
printf("======\n");
}
// 打印一维数组
// 优化1:将参数转换为指针类型
// 优化2:传入数组长度
void printArr(int *arr, int size) {
for (int i = 0; i < size; ++i) {
printf("%d ", arr[i]);
}
printf("\n======\n");
}
int main() {
int arr[2][2] = {1, 2, 3, 4};
int size = (sizeof(arr) / sizeof(arr[0])) * (sizeof(arr[0]) / sizeof(arr[0][0]));
printf("二维数组的总元素个数:%d\n", size);
printArr2(arr);
// 通过数组指针将二维数组装换为一维数组
int *pa = (int *) arr;
printArr(pa, size);
return 0;
}
输出:
二维数组的总元素个数:4
1 2
3 4
======
1 2 3 4
======
THE END