当前位置:  编程技术>c/c++/嵌入式

浅谈关于指针作为参数并改变它的值的问题

    来源: 互联网  发布时间:2014-10-21

    本文导语:  代码如下:#include 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的值是不会改变的 } 结果:21Press any key to continue 代码如下:#include v...

代码如下:

#include
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
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
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

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • gcc编译CORBA程序如何关闭智能指针转换为普通指针的警告
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 指向类成员函数的指针其实并非指针
  • 谁说java没指针,我觉得全是指针才对
  • 深入解析C++中的指针数组与指向指针的指针
  • 一个用指针传递内存的问题(如果传进去的是三重指针确不行)
  • busybox中的gzip运行过程中出现page fault错误,并指出出错的指针,但是怎么使用gdb调试,找到指针对应的语句?
  • 关于free指针的指针分量
  • C语言中常量指针与指针常量区别浅析
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • C++中指向对象的常指针与指向常对象的指针详解
  • 关于指针变量,struct 变量,指针使用的一些疑惑,望高手指教
  • 深入理解数组指针与指针数组的区别
  • 深入解析函数指针与返回函数的指针
  • 指向变量的常指针与指向常变量的指针详细解析
  • 结构指针类型强制转换
  • 请问return语句会执行哪些操作?在函数中return一个已分配内存的指针,该指针所占用的内存会释放吗?
  • 请问如何在linux (redhat)下传递一维数组指针?
  • C:函数指针
  • 利用函数指针的好处是什么?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3