在C语言中,指针是一种特殊的变量,它存储了一个变量的地址。指针允许直接访问和操作内存中的数据,为动态内存分配和函数参数传递提供了强大的工具。以下是一些关于C指针的基本概念和用法:

指针的声明和初始化
#include <stdio.h>

int main() {
    int num = 42;
    
    // 声明整型指针
    int *ptr;

    // 将指针指向变量的地址
    ptr = &num;

    // 或者一步完成声明和初始化
    // int *ptr = &num;

    // 打印指针所指向的变量的值
    printf("Value of num: %d\n", *ptr);

    return 0;
}

指针的运算
#include <stdio.h>

int main() {
    int num = 42;
    int *ptr = &num;

    // 指针运算:获取指针所指向的变量的地址
    printf("Address of num: %p\n", ptr);

    // 指针运算:获取指针所指向的变量的值
    printf("Value of num: %d\n", *ptr);

    // 修改指针所指向的变量的值
    *ptr = 100;
    printf("Updated value of num: %d\n", num);

    return 0;
}

指针和数组
#include <stdio.h>

int main() {
    int numbers[] = {1, 2, 3, 4, 5};
    int *ptr = numbers;

    // 使用指针访问数组元素
    printf("First element: %d\n", *ptr);

    // 移动指针到下一个元素
    ptr++;
    printf("Second element: %d\n", *ptr);

    return 0;
}

动态内存分配
#include <stdio.h>
#include <stdlib.h>

int main() {
    // 动态分配整型变量的内存
    int *ptr = (int*)malloc(sizeof(int));

    if (ptr != NULL) {
        *ptr = 42;
        printf("Value: %d\n", *ptr);

        // 释放动态分配的内存
        free(ptr);
    } else {
        printf("Memory allocation failed\n");
    }

    return 0;
}

指针和函数
#include <stdio.h>

// 函数接受指针作为参数
void modifyValue(int *ptr) {
    *ptr = 100;
}

int main() {
    int num = 42;

    // 将变量的地址传递给函数
    modifyValue(&num);

    // 变量的值已被修改
    printf("Modified value: %d\n", num);

    return 0;
}

指针是C语言中的强大工具,但也需要小心使用,以防止悬空指针、内存泄漏等问题。理解指针的基本概念和用法对于进行底层的内存操作是非常重要的。


转载请注明出处:http://www.zyzy.cn/article/detail/13524/C 语言