C语言复习之改变变量的指针地址
Posted 你是小KS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言复习之改变变量的指针地址相关的知识,希望对你有一定的参考价值。
1.声明
当前内容主要为本人复习和操作指针,以及改变指针的地址指向
主要解决:
- 将一个变量传递到函数中修改该指针的地址
- 修改NULL值的指针指向
基本理念
- 传递一个比原来指针更高一级的指针即可,然后在函数中使用*原来指针变量=地址值即可
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语言复习之改变变量的指针地址的主要内容,如果未能解决你的问题,请参考以下文章