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

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

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. MySQL必知必会2

    使用数据处理函数 函数 与其他大多数计算机语言一样,SQL支持利用函数来处理数据.函数一般是在数据上执行的,他给数据的转换和处理提供了方便,在前一章中用来去掉尾空格的RTrim()就是一个函数的例子 ...

  2. win10+aconda+pytorch

    1.需要建立项目的运行环境,每个项目应用的框架不用,所以对于每个项目分别用运行环境不会造成管理上的混乱以及应用上的冲突 2.建立项目运行环境: a.用管理员身份运行anconda prompt 创建c ...

  3. 模型层之ORM、数据库和单表操作

    一.ORM简介 ORM是“对象-关系-映射”的简称,一般指持久化数据和实体对象的映射 1.1 什么是“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中( ...

  4. Detecting GAN-generated Imagery using Color Cues

    Abstract     论文创新点:分析流行GAN网络结构得知,GAN网络生成得图片在颜色处理与真实摄像机拍摄的照片存在不同,主要表现在两方面.     实验结果:证明了两种线索能够有效区分GAN生 ...

  5. Create your first Java application

    参考链接 -[IntelliJ IDEA] https://www.jetbrains.com/help/idea/creating-and-running-your-first-java-appli ...

  6. 无法将文件xxx复制到xxx文件xxx正由另一进程使用,因此该进程无法访问此文件

    对于VS2017,可以这样处理,开始——>运行——>tskill msbuild,然后重新生成即可.

  7. Spring核心概念学习笔记

    1.Spring主要用到两种设计模式 1.1 工厂模式 Spring容器就是实例化和管理全部Bean的工厂. 工厂模式可以将Java对象的调用者从被调用者的实现逻辑中分离出来. 调用者只关心被调用者必 ...

  8. bootstrap-datetimepicker 日期控件起始时间和结束时间

    项目中经常会用到起止时间,如下图: 需要引用以下几个文件: <link href="~/lib/bootstrap/dist/css/bootstrap.min.css" r ...

  9. 网络编程-tcp三次握手和四次挥手

    TCP三次握手和四次挥手过程 1.三次握手 (1)三次握手的详述 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向 ...

  10. OC 组合实现多继承

    OC无法完全先C++使用多继承,但可以采用组合的模式来代替继承模式.(协议实现)实现多继承的代码:举例现在ClassC需要继承ClassA中methodA.ClassB中methodB,具体的代码为: ...