手机
当前位置:查字典教程网 >编程开发 >C语言 >浅谈关于指针作为参数并改变它的值的问题
浅谈关于指针作为参数并改变它的值的问题
摘要:复制代码代码如下:#includeintf(int*p){p=p+1;returnprintf("%dn",*p);}voidmain(){...

复制代码 代码如下:

#include<stdio.h>

int f(int *p){

p = p+1;

return printf("%dn",*p);

}

void main(){

int a[]={1,2};

int *p = a;//指针p是首地址

f(p);//调用

printf("%d",*p);//p的值是不会改变的

}

结果:

2

1

Press any key to continue

复制代码 代码如下:

#include<stdio.h>

void z(int *p){

p = p+1;

*p = 100;

}

void mian(){

int a[] = {1,2};

int *p = a;

z(p);//调用

printf("a[1]=%d",*(p+1));//指针(p+1)所指向的内存空间中的值改变了

}

结果:

a[1]=100

Press any key to continue

通过上下这两个例子可以得出结论,指针作为参数被传递的时候,在其它函数中不能改变它的值(这个指针指向的地址),却能改变这个指针

指向的地址中的值。

所以想要实现两个一级指针里的值交换,需要利用二级指针来实现:(指针q指向a,指针p指向b,实现q指向b,p指向a)

复制代码 代码如下:

#include<stdio.h>

void exchange(int **x,int **y){

int *temp;

temp = *x;//*x=*qq=&a

*x = *y;

*y = temp;

}

void main(){

int a =100;

int b = 12;

//定义指针

int *q = &a;

int *p = &b;

int **qq = &q;

int **pp = &p;

//输出

printf("q=%pn",q);

printf("p=%pn",p);

//调用函数,进行转换

exchange(qq,pp);

printf("========改变以后的==========n");

printf("q=%pn",q);

printf("p=%pn",p);

}

结果:

q=0012FF44

p=0012FF40

========改变以后的========

q=0012FF40

p=0012FF44

Press any key to continue

【浅谈关于指针作为参数并改变它的值的问题】相关文章:

浅析C语言头文件和库的一些问题

关于C语言指针赋值的问题详解

深入分析C++中几个最不常用的关键字

深入解析Linux下rn的问题

基于c的for循环中改变变量值的问题

浅析C++字节对齐容易被忽略的两个问题

头文件不宜定义变量的原因全面解析

指向变量的常指针与指向常变量的指针详细解析

基于memset()函数的深入理解

浅析C和C++函数的相互引用

精品推荐
分类导航