zoukankan      html  css  js  c++  java
  • C语言二级指针间接赋值

    重要意义:间接赋值的意义,实现了模块的功能划分,实现了软件作品的分层,使得模块接口和信息系统得以实现。 

    所谓二级指针就是指向指针的指针,其声明形式如下

    int *p=NULL
    int **p1=NULL;
    p1=&p;

    一级指针*运算,从所指向内存空间取出数值(类比:一级指针是藏宝图,所指向的内存空间是宝藏的存放的地点,宝藏是数值)

    二级指针*运算,从所指向内存空间取出地址(类比:二级指针是一个写有藏宝图存放地点的纸条,所指向的内存空间是藏宝图的存放的地点,藏宝图是数值)

    • 通过二级指针改变一级指针
    #include <stdio.h>
    #include<stdlib.h>
    int main()
    {
        char *p1=NULL;
        char **p2=NULL;
        p1=0x11;
        printf("改变之前p1指向:%p
    ",p1);
        p2=0x22;
        printf("改变之前p2指向:%p
    ",p2);
        p2=&p1;
        *p2=100;
        printf("改变之后p2指向:%p
    ",p2);
        printf("改变之后p1指向:%p
    ",p1);
        printf("shit......%d
    ",888);
        return 0;
    }

    输出结果:

    •  间接指针赋值的意义
    #include <stdio.h>
    #include<stdlib.h>
    #include<string.h>
    void modelfor2(char **line1,int *len1,char **line2,int *len2)
    {
        char *writeinln1 = (char*)malloc(100);
        *line1=writeinln1;
        strcpy(*line1,"九九那个艳阳天来嘿哟~");
        *len1=strlen(writeinln1);
    
        printf("%s
    ","===========================================");
        char *writeinln2 = (char*)malloc(100);
        *line2=writeinln2;
        strcpy(*line2,"20多的弟弟呀,爱上那丁锅锅~");
        *len2=strlen(writeinln2);
    }
    
    int main()
    {
       int len1=0;
       char *story1=NULL;
       int len2=0;
       char *story2=NULL;
       modelfor2(&story1,&len1,&story2,&len2);
       printf("第一行文本:%s
    ",story1);
       printf("第一行文本长度:%d
    ",len1);
       printf("第二行文本:%s
    ",story2);
       printf("第二行文本长度:%d
    ",len2);
       if (story1!=NULL)
       {
           free(story1);
           story1=NULL;
       }
       if (story2!=NULL)
       {
           free(story2);
           story2=NULL;
       }
       printf("%d
    ",888);
        return 0;
    }

    输出结果:

    间接赋值的意义,实现了模块的功能划分,实现了软件作品的分层,使得模块接口和信息系统得以实现。 

  • 相关阅读:
    centos 关于防火墙的命令
    jsp 时间格式
    @OneToMany
    CentOS7 关闭防火墙
    Centos系统中彻底删除Mysql数据库
    电脑装windows与Centos双系统时引导问题
    如何用C#代码查找某个路径下是否包含某个文件
    计算机中的正斜杠(/)与反斜杠()的区别
    MVC小例子
    vs怎么创建MVC及理解其含义
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/12053998.html
Copyright © 2011-2022 走看看