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

Posted 你是小KS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言复习之改变变量的指针地址相关的知识,希望对你有一定的参考价值。

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.使用这个方式就可以修改数组的内存地址了

以上是关于C语言复习之改变变量的指针地址的主要内容,如果未能解决你的问题,请参考以下文章

C语言指针函数链表复习

c 复习

c 复习

c 复习

C语言复习之字符指针(迭代内存申请等操作)

c语言指针复习 难点突破 双重指针 函数指针结构体指针等...