C 语言指针 “实战终章”:综合案例拆解,融会贯通指针编程之道(六)

发布于:2025-02-10 ⋅ 阅读:(28) ⋅ 点赞:(0)

C语言指针 “实战终章”:综合案例拆解,融会贯通指针编程之道

引言

指针作为C语言的核心概念之一,在各类编程场景中都发挥着至关重要的作用。从数组操作到函数调用,指针为我们提供了灵活且高效的编程方式。本博客将通过一系列经典案例,深入剖析指针在数组和指针编程中的关键应用,帮助读者全面掌握指针编程技巧。

案例一:数组元素交换

代码示例

#include <stdio.h>

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int arr[] = {10, 20, 30};
    printf("交换前数组元素: ");
    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
    {
        printf("%d ", arr[i]);
    }
    swap(&arr[0], &arr[1]);
    printf("\n交换后数组元素: ");
    for  (int i = 0; i < sizeof arr) / sizeof(arr[0]); i++) 
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

代码分析

  • 函数swap:它接受两个指针ab,通过解引用*a*b获取指针所指向的值,然后交换它们的值。
  • 主函数main:定义了一个数组arr,并调用swap函数来交换数组元素。这里&arr[0]&arr[1]分别是数组第一个元素和第二个元素的地址。

案例二:数组指针传递

代码示例

#include <stdio.h>

void printArray(int *arr, int size) 
{
    for (int i = 0; i < size; i++) 
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() 
{
    int arr[] = {10, 20, 30};
    printArray(arr, sizeof(arr) / sizeof(arr[0]));
    return 0;
}

代码分析

  • 函数printArray:接受一个指针arr和一个整数sizearr指向数组首元素,通过arr[i]访问数组元素。
  • 主函数main:将数组arr传递给printArray函数,这里arr实际上是数组首元素的地址。

案例三:二维数组指针

代码示例

#include <stdio.h>

void printMatrix(int (*matrix)[3], int rows) 
{
    for  (int i = 0; i < rows; i++) 
    {
        for (int j = 0; j < 3; j++) 
        {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int matrix[][3] = 
    {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    printMatrix(matrix, 3);
    return 0;
}

代码分析

  • 函数printMatrixint (*matrix)[3]表示一个指向二维数组的指针,matrix是二维数组名。matrix[i][j]用于访问二维数组的元素。
  • 主函数main:将二维数组matrix传递给printMatrix函数,这里matrix是二维数组首元素的地址。

案例四:指针数组

代码示例

#include <stdio.h>

int main() 
{
    int num1 = 10;
    int num2 = 20;
    int *arr[] = {&num1, &num2};
    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) 
    {
        printf("%d\n", *arr[i]);
    }
    return 0;
}

代码分析

  • 数组arrarr是一个指针数组,arr[0]arr[1]分别指向num1num2
  • 循环:通过*arr[i]解引用指针,获取指针所指向的值并打印。

总结

通过以上案例,我们深入探讨了指针在数组和指针编程中的各种应用。无论是数组元素交换、数组指针传递,还是二维数组指针和指针数组的操作,指针都发挥着关键作用。在实际编程中,理解指针的概念和应用,能够帮助我们编写更高效、灵活的代码。希望读者通过这些案例,能够融会贯通指针编程之道,在今后的编程实践中取得更好的成果。