欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

玩转C语言基础:如何通过指针变量、方法和地址来修改值

最编程 2024-08-05 11:24:17
...

前言

变量:就是给内存地址取一个别名;

1. 概述

这里记录下:通过指针变量修改值、通过方法修改值、通过地址修改值;

1.  通过指针变量修改值:有两种方式
        1>:直接给变量重新赋值;
        2>:获取指针变量p的值,间接修改;
2.  通过方法修改值:
        通过运行代码,发现 修改前的i的值 与 change(int i)方法中的i的地址不是同一个,所以无法修改;
        根据这个可以得出一个结论:在以后见到都是有用的:只要通过方法修改两个变量的值,都是无法修改的,
        因为这两个变量的地址已经变了,所以无法修改;
3.  通过地址修改值:
        这里就需要把地址给传递进来,用 int* p来接收传递过来的地址,这里的p就已经是地址了,可以直接打印p,
        就表示输出的是 地址;

2. 代码如下

1>:通过指针变量修改值:一般有两种方式:

a:直接给变量重新赋值;
b:获取指针变量p的值,间接修改;

#include<stdio.h>  // 导入头文件,头文件都是方法的声明。
// 通过指针修改值
void main(){

    // 定义变量 i
    int i = 100;
    // 获取 i的地址,用指针变量 int* p来接收
    int* p = &i;

    // 方式 1:直接给 i重新赋值
    i = 200;
    // 方式 2:获取指针变量 p的值,来间接修改
    // *p:表示 获取指针变量 p的值,来修改i的值
    *p = 300;

    printf("i的值为:%d\n", i);  // 300
    getchar();
}
2>:通过方法修改值:

通过运行代码,发现 修改前的i的值 与 change(int i)方法中的i的地址不是同一个,所以无法修改;

#include<stdio.h>  // 导入头文件,头文件都是方法的声明。

// 在c中,调用顺序是从上往下执行,所以调用方法需要写到上边
// 通过方法修改值:通过打印可知:i的地址和change中的地址不是同一个,所以无法修改,这里可以通过地址来修改
void change(int i){
    printf("change中i的地址是:%p\n", &i);   // i的地址是:0019F894
    i = 200;
}

void main(){
    int i = 100;
    printf("i的地址是:%p\n", &i);  // i的地址是:0019F968
    printf("i的值为:%d\n" , i);
    // change(i);
    change(&i);
    printf("i修改后的值为:%d\n", i); 
    getchar();
}
3>:通过地址修改值:可以修改成功,i修改后的值 为 200 ;
#include<stdio.h>  // 导入头文件,头文件都是方法的声明。

// 通过地址修改值:这里就需要把地址传递进来,用int* p来接收传递过来的地址,因为 这里的 p 就相当于 p = &i,
// 所以 这里的 p就已经是地址了;
void change(int* p){
    printf("change中i的地址是:%p\n", p);// 这里的p已经是地址,可以直接打印
    *p = 200; // 通过 *p就可以获取 p地址的值,然后给其赋值为200
}

void main(){
    int i = 100;
    printf("i的地址是:%p\n", &i);  // i的地址是:0019F968
    printf("i的值为:%d\n" , i);
    // change(i);
    change(&i);
    printf("i修改后的值为:%d\n", i);  // 200
    getchar();
}

推荐阅读