手机
当前位置:查字典教程网 >编程开发 >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的for循环中改变变量值的问题

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

C++中一维数组与指针的关系详细总结

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

深入探讨C++父类子类中虚函数的应用

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

C++中指向对象的常指针与指向常对象的指针详解

从汇编看c++中多态的应用

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

c++ 指针与引用的区别介绍及使用说明

精品推荐
分类导航