【C语言】深入理解二级指针

35 篇文章 14 订阅
订阅专栏

(一)指针的定义

  • 一级指针:是一个指针变量,指向一个普通变量,并保存该普通变量的地址;
  • 二级指针:是一个指针变量,指向一个一级指针,并保存该一级指针的地址;

(二)引入二级指针

由于一级指针已经很熟悉,这里不再赘述,这里我们只谈谈二级指针
下面先简单使用一个二级指针看看

#include <stdio.h>

int main()
{
	int a = 10;
	int b = 20;
	int *p = &a;
	int** s = &p;

	//一次解引用*s 此时类型int*
	*s = &b;
	//二次解引用**s 此时类型int
	**s = 200;
	return 0;
}

逻辑关系如下:
a是一个int类型的变量,一级指针p指向a,并保存a的地址;
二级指针变量s指向一级指针变量p,并保存p的地址

二级指针s解引用操作:

  • 一次解引用
    *s的类型变成了(int*)(代表着一级指针p)间接改变了p的指向,从a的地址变成了b的地址;
  • 二次解引用
    s的类型变成了int (代表着变量b),此时s = 200;(等价于b = 200;)

(三)深入理解二级指针

(1)下面举个例子:
#include <stdio.h>

int main()
{
	//普通变量
	int a1 = 1;
	int a2 = 1;
	int a3 = 1;
	
	//一级指针
	int* p1 = &a1;
	int* p2 = &a2;
	int* p3 = &a3;
	
	//二级指针
	int **s = &p1; 
	return 0;
}

(假设a1,a2,a3空间连续,p1,p2,p3空间连续)逻辑图如下:
在这里插入图片描述
接下来我们结合上面的逻辑图看看下面这张表
在这里插入图片描述

分析:

  • s+1 表示二级指针s指向了p2,,移动的字节数需要根据指向的数据的空间大小进行计算sizeof(int*) * 1,所以移动4字节,此时s+1还是二级指针,所以类型int**
  • *s+1 先对s进行一次解引用为*s,相当于操控一级指针p1,然后*s + 1 ,相当于p1指向了a2的地址,所以移动了sizeof(int) * 1 = 4字节 ,此时的类型为 int*
  • **s + 1表示二次解引用,相当于a1的值+1,所以a1 = 2; a1的类型就是int
(2)在(1)的前提下,那要是把所有的类型换成char、short、double类型呢
  • char类型(1字节)

在这里插入图片描述

  • short类型(2字节)
    在这里插入图片描述

  • double类型(8字节)
    在这里插入图片描述

(四)总结

  • 在深入理解了二级指针的逻辑处理过程之后,我们不难发现:
  • 对二级指针变量s指针的移动操作时,s都会将以保存的一级指针的类型进行解析步长(s + sizeof( p) * n 1),而一级指针*s(相当于p一级指针变量)会以保存的变量的类型进行解析步长(*s + sizeof(a) *n 1

  1. n指的是移动的次数,本例题是n = 1 ↩︎ ↩︎

C语言中的指针以及二级指针代码详解
08-28
主要介绍了C语言中的指针以及二级指针代码详解,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
深入理解C语言指针
12-20
指针是一种数据类型 指针也是一种变量,占有内存空间,用来保存内存地址 指针就是告诉编译器,开辟4个字节的存储空间(32位系统),无论是几级指针都是一样的 *p操作内存 在指针声明时,* 号表示所声明的变量为指针 在指针使用时,* 号表示操作指针所指向的内存空间中的值 *p相当于通过地址(p变量的值)找到一块内存;然后操作内存 *p放在等号的左边赋值(给内存赋值) *p放在等号的右边取值(从内存获取值) 指针变量和它指向的内存块是两个不同的概念 给p赋值p = 0x1111;只会改变指针变量值,不会改变所指的内容;p = p +1;“p++ 给*p赋值*p=’a’;不会改变指针变量的值,
C语言】一级、二级指针详解
qq_62917398的博客
04-29 620
类型名 *指针的名字;指针本身也是个变量,只是该变量比较特殊,它里面存放别人的地址下面是初始化指针,以及给指针赋值int a = 1;int b = 2;//定义了指针p,p里面存放变量a在内存中地址(p指向a的地址,p指向a)p = &y;int *q;q = &a;int a=88;int *p=&a;int **q=&p;char b='#';char *p=&b;
C语言 二级指针详解及示例代码
09-01
本文主要介绍C语言 二级指针,这里整理了C语言二级指针的基础资料并附有示例代码和实现结果,帮助大家学习理解相关知识,有学习的朋友可以参考下
C语言基础入门】二级指针、一维数组与指针、二维数组与指针
m0_62599305的博客
11-05 1812
在学习C语言的过程中,理解指针的概念是非常重要的。指针提供了一种直接访问内存地址的方式,使得我们可以更加灵活地管理数据和内存。在本文中,我们将介绍C语言中的二级指针、一维数组与指针,并通过通俗易懂的语言和示例代码来帮助读者理解这些概念。C语言中的指针提供了强大的工具,通过了解和灵活运用指针,我们能够更有效地操作内存,实现复杂的数据结构和算法。二级指针为多级指针的概念提供了基础,而一维数组与指针的结合则在处理数组数据时提供了便捷的方式。在实际编程中,灵活运用这些概念可以让程序更加高效、清晰。
C的实用笔记32——二级指针(多级指针)
lzh201864031的博客
03-26 1632
但有严重缺陷我们早就探讨过指针变量类型的重要性。
c语言深入理解二级指针,深入理解C语言指针(二)
weixin_33375360的博客
05-21 237
1.C语言内存分配栈区(Stack):由编译器自动分配释放,存放函数的参数值,局部变量等信息。堆区(Heap):由程序员分配释放,系统会在程序结束时回收。全局区(静态区):全局和静态变量存放在这里,由系统回收。文字常量区:存放常量字符串,由系统回收。程序代码区:。C语言堆内空间申请函数为 malloc(size)2.二级指针一级指针类型如 int* ,那么二级指针类型定义为 int** ,以此类推...
c语言指针深入理解
moran114的博客
07-03 1173
指针是c语言中较难理解的知识点了,也非常重要,今天我们就来一起深入理解指针吧🌞🌞🌞
C语言-一级指针与二级指针的详解(图文并茂,深入浅出)
Xminyang的博客
08-21 7203
高清音视频文件由H.264视频和AAC音频合成;采用FFmpeg解码库对音视频文件进行格式封装解码;采用硬件分别对音频、视频进行解码;最后,实现音视、视频的同步播放。其整体解决方案如下图: ...
c语言指针之二级指针示例
01-20
理解这些示例有助于深入理解二级指针如何工作,包括它们如何存储和改变指针的地址,以及如何通过二级指针间接访问和修改内存。 总的来说,二级指针C语言中复杂但强大的特性,它扩展了对内存操作的能力,使得动态...
深入理解C语言指针的奥秘.doc
07-13
同理,`char*ptr`的类型是`char*`,`int**ptr`的类型是`int**`,这表示ptr可以存储一个指向`int`指针的地址,即二级指针。 其次,指针所指向的类型是指通过指针访问的内存区域被视为的数据类型。如`int*ptr`所指向...
二级水平C语言的指针个人理解与解释
12-09
在本文中,我们将深入探讨二级水平的C语言指针概念,结合示例代码来理解指针的工作原理。 1. **指针的定义与使用**: - 指针变量是用来存储内存地址的变量。例如,`int *p` 定义了一个指向整型变量的指针p。 - `*...
一级指针C语言,C语言一级指针与二级指针
weixin_39529443的博客
05-19 399
指针的概念指针就是地址, 利用这个地址可以找到指定的数据指针就是地址, 那么在使用的时候, 常常会简单的说 指针变量为指针指针变量就是存储地址的变量int *p1;// 申请了一个变量, 即在内存中开辟了一块内存, 存储数据// 开辟了 8 个字节, 在 Mac 下 指针都占 8 个字节使用指针, 实际上应该说成使用指针变量1> 算术运算+1 移动几个字节?看类型: int *, long...
C语言深入理解指针
Smalleyes47的博客
04-12 2074
C语言深入理解指针,了解指针变量,指针与数组,字符指针,数组指针,函数指针,函数指针数组等等
详解C语言中的二级指针
weixin_47712251的博客
05-25 4951
C语言中,二级指针是指一个指向指针的指针,用于指向一个指针的地址。数据类型 **变量名;其中,数据类型为指针类型,变量名为二级指针变量的名称。本篇文章详细介绍了二级指针的定义、计算规则、读写操作以及取地址操作。通过掌握二级指针的使用,C语言程序员可以更加灵活地操作多级数据结构,并提高程序的执行效率和可读性。
C语言】函数
最新发布
2402_85428625的博客
07-23 1292
1. 函数的概念 2. 库函数 2.1 标准库和头⽂件 2.2 库函数的使⽤⽅法 2.2.1 功能 2.2.2 头⽂件包含 2.2.3 实践 2.2.4 库函数⽂档的⼀般格式 3. ⾃定义函数 3.1 函数的语法形式 3.2 函数的举例 4. 形参和实参 4.1 实参 4.2 形参 4.3 实参和形参的关系 5. return语句 6. 数组做函数参数 7. 嵌套调⽤和链式访问 7.1嵌套调用 7.2 链式访问 8. 函数的声明和定义 8.1 单个⽂件 8.2 多个⽂件 8.3static 和 extern
公共基础知识c语言计算机二级题库
07-29
公共基础知识C语言计算机二级题库主要涵盖了C语言基础知识和应用技巧。题库中的题目大多涉及到C语言的基本语法、数据类型、控制结构、函数、数组、指针、文件操作等内容。 在题库中,你可能会遇到一些基础的语法题,如输出某个特定字符、计算某个数的平方等。此外,还会有一些需要运用控制结构的题目,如判断某个数是否为素数、求某个数的阶乘等。 在应用技巧方面,题库中还会涉及到一些常用的C语言函数的使用,如字符串处理函数、数学函数、日期和时间函数等。此外,你还会接触到一些需要运用数组的题目,如数组元素的排序、二维数组的使用等。 指针是C语言中较难理解的概念之一,题库中也会涉及到一些需要运用指针的题目。你可能会遇到需要交换两个变量值的题目、动态内存分配的题目等。 此外,文件操作也是C语言中一个重要的部分,你可能会遇到需要读取文件内容、写入文件内容等题目。 总的来说,公共基础知识C语言计算机二级题库涵盖了C语言基础知识和应用技巧的各个方面,通过练习这些题目,你可以深入理解C语言,并提高自己的编程能力。
写文章

热门文章

  • 【C语言】基础总结篇(究极避坑) 38804
  • 【MySQL】Navicat中SQL创建数据库表 28860
  • 【C语言】深入理解二级指针 20869
  • 【MySQL】外键约束 19841
  • 【C语言】输出1-1000内的完数,形如6 = 1+2+3 10362

分类专栏

  • C语言 35篇
  • C++ 61篇
  • 汇编语言 5篇
  • 数据结构 23篇
  • 操作系统 4篇
  • 计算机组成原理 3篇
  • 计算机网络 3篇
  • Linux 48篇
  • 排序 8篇
  • 算法 12篇
  • mysql 9篇
  • redis
  • 设计模式 5篇
  • 环境搭建 2篇
  • newcoder 1篇
  • leetcode 30篇
  • 其他 5篇

最新评论

  • 【MySQL】外键约束

    2301_76307891: 讲的很不错

  • 【C++】new/delete对象过程

    河远: 仅仅只有一个指向空间的指针

  • 【C语言】结构体位域

    hehe053: (二)举例说明中 test.b = 6; 溢出后,用%d打印出来,怎么变成-2了? test.d = 8; 溢出后,用%d打印出来,怎么变成-8了? 没看懂...最后打印画的图也没看懂

  • 【Linux】进程通信(信号量 练习巩固)

    普通网友: 解决了,需要手动编译gcc -c a.c -o a

  • 【Linux】进程通信(信号量 练习巩固)

    普通网友: 为什么链接不了啊,undefien reference

最新文章

  • 【操作系统】第四章 文件管理
  • 【数据结构】第五章 树与二叉树
  • 【计算机组成原理】第三章 存储系统
2023年15篇
2022年109篇
2021年126篇
2020年5篇

目录

目录

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司经开税务优化网站服务唐山网站的优化洪江网站关键词优化排名许昌网站优化代理手机网站优化配置网站建设优化就属金手指19黄岛区网站seo优化排名快排优化网站排名加盟费用东莞企业网站关键词优化工具西安专业网站优化公司如何培训网站内部优化项城百度网站优化选哪家景德镇网站优化推广延吉网站优化选哪家网站优化能创业吗网站搜索优化的选n火11星优化网站架构设置网站过度优化的问题需如何避免酒泉网站优化推广营销怎么做网站建设优化立联火27星要华富小企业网站优化网站优化-上海迪基特数字二手设备转让网站优化行业涧西网站优化报价芜湖网站优化标题可以修改吗崇明区公司网站优化定制四川网站优化做的比较好巩义网站推广优化推荐大同专业的网站优化seo费用哈尔滨公司网站优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化