Linux兵工厂
认证:普通会员
所在专题目录 查看专题
11.搞懂结构体、联合、typedef
12.C语言变量的作用域,你知多少?
13.C高级程序控制
14.程序中常用的输入输出
15.指针和指针数组
16.函数指针和链表(附源码)
作者动态 更多
void关键字有哪些用法
3星期前
C语言如何提高程序的可读性?
04-13 20:49
C语言程序由哪些部分组成?
04-13 20:47
C语言的入口函数
04-13 20:43
ANSI C的编译限制有哪些?
04-13 20:41

15.指针和指针数组

更多资料请关注微信公众号:Linux兵工厂

在C语言中,指针是一种特殊的变量,它存储的是一个变量的地址。指针数组是一个数组,其元素都是指针类型。以下是关于C语言指针和指针数组的详细解释:

指针(Pointer):

指针是一个变量,其值为另一个变量的地址。通过指针,可以直接访问和修改内存中的数据。以下是一些基本的指针操作:

  1. 指针声明和初始化:

    int *ptr;    // 声明一个整型指针
    double *dblPtr;  // 声明一个双精度浮点型指针
    
  2. 指针赋值:

    int x = 10;
    int *ptr = &x;  // 将变量x的地址赋给指针ptr
    
  3. 指针解引用:

    int x = 10;
    int *ptr = &x;
    printf("Value of x: %d\n", *ptr);  // 解引用指针,获取存储在地址上的值
    
  4. 指针算术运算:

    int arr[5] = {1, 2, 3, 4, 5};
    int *ptr = arr;
    
    for (int i = 0; i < 5; i++) {
        printf("%d ", *(ptr + i));  // 指针算术运算,移动到下一个元素的地址
    }
    
  5. 空指针:

    int *ptr = NULL;  // 声明一个空指针
    

指针数组(Pointer Array):

指针数组是一个数组,其元素都是指针类型。每个指针指向数组或其他变量的地址。以下是指针数组的基本操作:

  1. 声明和初始化指针数组:

    int num1 = 10, num2 = 20, num3 = 30;
    int *ptrArr[3];  // 声明一个包含3个整型指针的数组
    
    ptrArr[0] = &num1;  // 第一个元素指向num1的地址
    ptrArr[1] = &num2;  // 第二个元素指向num2的地址
    ptrArr[2] = &num3;  // 第三个元素指向num3的地址
    
  2. 通过指针数组访问数据:

    for (int i = 0; i < 3; i++) {
        printf("Value at index %d: %d\n", i, *ptrArr[i]);
    }
    
  3. 指针数组作为函数参数:

    void printArray(int *arr[], int size) {
        for (int i = 0; i < size; i++) {
            printf("%d ", *arr[i]);
        }
    }
    
    int main() {
        int num1 = 10, num2 = 20, num3 = 30;
        int *ptrArr[3] = {&num1, &num2, &num3};
    
        printArray(ptrArr, 3);
        return 0;
    }
    

指针和指针数组在C语言中是强大而灵活的工具,它们使得对内存的直接操作成为可能,同时也需要小心使用,以避免出现悬垂指针和内存泄漏等问题。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 3
关注 25
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧