zoukankan      html  css  js  c++  java
  • c指针的传递

    c指针的传递

    作为函数参数传递

    真正的传入一个指针到函数中

    image-20210827171357110

    间接的传入指针到函数中

    image-20210827171451818

    p1就是指针p,而p2是一个新的指针

    以下分别为指针p、p1、p2的地址:

    image-20210827171611554

    作为变量传递

    初始值:image-20210828171332886

    1. 直接改变变量的值

    image-20210827172216274

    1. 间接改变变量的值

    这里改变的是指针p2中存储的地址的值,而不是p2中所存储地址对应内存的值

    image-20210827172151988

    测试程序:

    /*
     * @Author: itThree
     * @Date: 2021-08-27 13:59:28
     * @LastEditTime: 2021-08-27 17:11:14
     * @Description: 
     * @FilePath: cpp	estcppswapWithPointers.cpp
     * 光阴之逆旅,百代之过客,而已
     */
    #include<stdio.h>
    
    //传入指针p,参数int* &p解析指针地址
    //就是说传入的是真正的指针p
    void testp1(int* &p1){
        int num1 = 2020;
        //将p1地址对应内存下的值直接改变;
        *p1 = num1;
        printf("%d,%d,%d,%p
    ",p1,*p1,num1,&p1);
    
    
    }
    //传入指针p,参数int* p初始化并指向传入的指针
    //就是说初始化一个指针指向指针p所指向的东西
    void testp2(int* p2){
       int num2 = 2019;
       //将p2指向num2的地址
       p2 = &num2;
       printf("%d,%d,%d,%p
    ",p2,*p2,num2,&p2);
    
       }
    int main(){
        // int x = 1;
        // int y = 2;
        // //传入x,y的地址,交换其值的位置
        // swapWithPointers(&x,&y);
        // printf("x=%d	y=%d",x,y);
        int num = 2021;
        int* p = #
        printf("初始值:
    ");
        printf("%d,%d,%d,%p
    ",p,*p,num,&p);
        printf("经过test1:
    ");
        testp1(p);
        printf("经过test2:
    ");
        testp2(p);
        //从结果可以看出test1真正的改变了num的值,而test2仅是将指针指向了另一个地址
        printf("最终:
    ");
        printf("%d,%d,%d,%p
    ",p,*p,num,&p);
        
    
        return 0;
    }
    

    运行结果:

    image-20210827172030142
    </stdio.h>

  • 相关阅读:
    GKCTF2020
    PTA的Python练习题(二十三)
    Web刷题之旅(三)
    Web刷题之旅(二)
    Web刷题之旅(一)-攻防世界 站
    PTA的Python练习题(补)
    Ctfshow
    Ctfshow
    15、实操篇——Vi和Vim编译器
    13、14、实操篇——远程登录到Linux服务器和远程上传下载文件
  • 原文地址:https://www.cnblogs.com/MR---Zhao/p/15194713.html
Copyright © 2011-2022 走看看