C语言指针参数和数组参数详解

需积分: 8 1 下载量 154 浏览量 更新于2024-08-04 收藏 333KB PDF 举报
指针进阶之数组参数和指针参数 在C语言中,指针是一种复杂的数据类型,它可以用来存储其他变量的地址。今天我们将讨论指针在数组和参数传递中的应用。 一、回顾 在之前的课程中,我们已经学习了字符指针和指针数组的概念。字符指针是一个指向字符的指针变量,而指针数组是一个数组,其中每个元素都是指针类型。 二、数组参数 在C语言中,数组可以作为函数的参数传递。有两种方式来传递数组参数:一维数组传参和二维数组传参。 1. 一维数组传参 可以将一维数组作为函数的参数传递。例如: ```c void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int arr[5] = {1, 2, 3, 4, 5}; printArray(arr, 5); return 0; } ``` 在上面的代码中,我们定义了一个函数printArray,它接收一个整型数组和一个整型变量作为参数。在main函数中,我们创建了一个整型数组arr,并将其传递给printArray函数。 2. 二维数组传参 二维数组也可以作为函数的参数传递。例如: ```c void print2DArray(int arr[][3], int row, int col) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%d ", arr[i][j]); } printf("\n"); } } int main() { int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; print2DArray(arr, 2, 3); return 0; } ``` 在上面的代码中,我们定义了一个函数print2DArray,它接收一个二维整型数组、行数和列数作为参数。在main函数中,我们创建了一个二维整型数组arr,并将其传递给print2DArray函数。 三、指针参数 在C语言中,指针也可以作为函数的参数传递。有两种方式来传递指针参数:一级指针传参和二级指针传参。 1. 一级指针传参 一级指针是一个指向其他变量的指针。例如: ```c void printPointer(int *p) { printf("%d\n", *p); } int main() { int a = 10; int *p = &a; printPointer(p); return 0; } ``` 在上面的代码中,我们定义了一个函数printPointer,它接收一个整型指针作为参数。在main函数中,我们创建了一个整型变量a,并将其地址传递给printPointer函数。 2. 二级指针传参 二级指针是一个指向指针的指针。例如: ```c void printDoublePointer(int **pp) { printf("%d\n", **pp); } int main() { int a = 10; int *p = &a; int **pp = &p; printDoublePointer(pp); return 0; } ``` 在上面的代码中,我们定义了一个函数printDoublePointer,它接收一个整型二级指针作为参数。在main函数中,我们创建了一个整型变量a,并将其地址传递给printDoublePointer函数。 数组和指针都是C语言中的重要概念,它们可以用来存储和传递数据。理解数组和指针的用法是 master C语言的关键。