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

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

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\n",p1);
p2=0x22;
printf("改变之前p2指向:%p\n",p2);
p2=&p1;
*p2=;
printf("改变之后p2指向:%p\n",p2);
printf("改变之后p1指向:%p\n",p1);
printf("shit......%d\n",);
return ;
}

输出结果:

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

输出结果:

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

C语言二级指针间接赋值的更多相关文章

  1. C语言二级指针底层实现

    C语言中,Pointers to Pointers,即二级指针. 一级指针和二级指针的值都是指向一个内存单元: 一级指针指向的内存单元存放的是源变量的值, 二级指针指向的内存单元存放的是一级指针的地址 ...

  2. C语言 二级指针内存模型②

    //二级指针第二种内存模型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #incl ...

  3. C语言 二级指针内存模型①

    //二级指针第一种内存模型 #include<stdio.h> #include<stdlib.h> //说明:①:类似于int a[5]={0},数组名a是一维数组a中首元素 ...

  4. 真正明白C语言二级指针(转载)

    指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的 ...

  5. C语言二级指针(指向指针的指针)

    转载:http://c.biancheng.net/cpp/html/85.html 指针可以指向一份普通类型的数据,例如 int.double.char 等,也可以指向一份指针类型的数据,例如 in ...

  6. 真正明白c语言二级指针

    指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的 ...

  7. C语言 二级指针内存模型混合实战

    //二级指针内存模型混合实战 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #i ...

  8. C语言 二级指针内存模型③

    //二级指针内存模型③ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #incl ...

  9. c语言二级指针内存模型

    第一种: 指针数组作为输入参数 char *myArray[] = {"aaaaaa", "ccccc", "bbbbbb", " ...

随机推荐

  1. TP5 模型CURD

    ThinkPHP5的模型是一种对象-关系映射(Object / Relation Mapping ,简称 ORM)的封装,并且提供了简洁的ActiveRecord实现.一般来说,每个数据表会和一个“模 ...

  2. Java开发笔记(一百一十四)利用Socket传输文本消息

    前面介绍了HTTP协议的网络通信,包括接口调用.文件下载和文件上传,这些功能固然已经覆盖了常见的联网操作,可是HTTP协议拥有专门的通信规则,这些规则一方面有利于维持正常的数据交互,另一方面不可避免地 ...

  3. C++Primer 5th Chap2 Variables and basic Types

    wchar_t,char16_t,char32_t用于拓展字符集 char和signed char并不一样,由编译器决定类型char表现上述两种中的哪一种 一般long的大小和int无二,如果超过in ...

  4. Python进阶:GIL(全局解释器锁)

    一个不解之谜 一段代码 def CountDown(n): while n > 0: n -= 1 # CountDown(100000000) #==8秒 from threading imp ...

  5. Gym102028G Shortest Paths on Random Forests 生成函数、多项式Exp

    传送门 神仙题-- 考虑计算三个部分:1.\(n\)个点的森林的数量,这个是期望的分母:2.\(n\)个点的所有森林中存在最短路的点对的最短路径长度之和:3.\(n\)个点的所有路径中存在最短路的点对 ...

  6. go 学习笔记(4) import

    package main import ( f "fmt" ) const NAME string = "imooc" var a string = " ...

  7. C#使用Selenium

    介绍: Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla ...

  8. 记录用到的mssql的几个方法

    1.RIGHT ( character_expression , integer_expression ) 返回字符串中从右边开始指定个数的字符 character_expression 字符或二进制 ...

  9. AppRTC服务搭建(测试)

    提供一个在线的webrtc服务器测试,需要的朋友看看.https://www.webrtcserver.cn/ 服务器搭建环境各有不同在此参考前人经验差试一下. 运行AppRTC需要使用Google ...

  10. 【转载】C#中string.IsNullOrEmpty和string.IsNullOrWhiteSpace区别

    在C#中判断字段是否为空或者Null的时候,我们一般会使用到string.IsNullOrEmpty和string.IsNullOrWhiteSpace方法,这两个方法在大部分情况下判断的结果是一致的 ...