C语言复习之改变变量的指针地址

本文介绍了如何在C语言中通过传递比原指针高一级的指针来修改其指向的地址,包括修改非空及NULL值指针的示例,并总结了修改内存地址指向的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.声明

当前内容主要为本人复习和操作指针,以及改变指针的地址指向

主要解决:

  1. 将一个变量传递到函数中修改该指针的地址
  2. 修改NULL值的指针指向

基本理念

  1. 传递一个比原来指针更高一级的指针即可,然后在函数中使用*原来指针变量=地址值即可

2.一个基本的字符指针的修改demo

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

// 改变一个指针的具体指向

void function_change_string_point(char **p){
    *p="666666";
}

void function_no_change_string_point(char *p){
    p="888888";
}

int main() {

    char *p = malloc(sizeof(char) * 10);
    p = "123456"; // 将p指向123456
    printf("p==>%s\n",p);
    // 无法改变一个指针
    function_no_change_string_point(p);
    printf("p==>%s\n",p);
    // 改变一个指针直接传递比原来指针多一级的指针即可
    function_change_string_point(&p);
    printf("p==>%s\n",p);
    return 0;
}

debug结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明指针改变必须传递比自身高一级的指针才可以修改(可以在函数中更改对指针地址的指向)

3.修改一个NULL变量的地址

int main() {

    char *p=NULL; // 指向NULL的地址0x0
    printf("p==>%s\n",p);
    // 无法改变一个指针
    function_no_change_string_point(p);
    printf("p==>%s\n",p);
    // 改变一个指针直接传递比原来指针多一级的指针即可
    function_change_string_point(&p);
    printf("p==>%s\n",p);
    return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.总结

1.使用c语言的指针地址修改的特点,我们可以在一个函数中直接修改这个变量的地址,并为其初始化内容(有点像构造函数)

2.修改内存地址的指向需要比原来更高一级的指针传递到函数中,然后在函数中修改即可

3.使用这个方式就可以修改数组的内存地址了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值