手机
当前位置:查字典教程网 >编程开发 >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

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

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

怎么实现类的成员函数作为回调函数

关于STL中set容器的一些总结

浅析栈区和堆区内存分配的区别

函数指针与指针函数的学习总结

深入解析Linux下rn的问题

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

浅析内存对齐与ANSI C中struct型数据的内存布局

关于STL中的map容器的一些总结

深入C++中API的问题详解

精品推荐
分类导航