【一】曾经那些错误,你又踩坑了吗?

news2024/11/27 18:30:17

巩固基础和不断练习,我们才会进步!这一期开始,我们就要看看我们之前的学过的知识到底掌握了没有,再通过练习去巩固! 


目录

一、for循环

二、指针有关内容

1.*(解引用)和其他运算符

2.指针变量的移动

3.二维数组

 三、逻辑运算符

四、存储方式,输出格式

1.输出格式

 2.存储方式

五、const修饰指针变量

六、与字符串有关的

七、求结构体的内存大小(内存对齐)

八、功能型(观察)

 总结


一、for循环

初始化部分只在进入循环时运行一次! 

例题1:

 

 看for循环执行次数,那就是要看条件判断部分,y=123 &&x<4,y=123恒为真,x<4只在x从开始的前四次小于4为真,所以执行次数就为4

例题2:

我们先看了解 getchar();

getchar就是在缓冲区中拿一个字符。

        ch=getchar()!='\n',就是将缓冲区的值拿出来赋给ch,在判断等不等于'\n'

        getchar()!='\n',判断从缓冲区拿出字符等不等于'\n'

是不是乍一看都是对的啊??

但你仔细发现D那不就错了!刚刚我们说过,for循环的初始化部分只执行一次,那你这不是只拿了一次,然后一直在比同一个吗?

二、指针有关内容

1.*(解引用)和其他运算符

 在我们了解了运算符的优先顺序以后,那么例子就来了:

 A: p会先和*结合,先解引用,1009+=1,可以!

 B:当然括号优先级最大,(*p)++;1009++,可以!

 C:++(1009),当然可以!

前置++:先加再使用;后置++,先使用再加

 D:*p++,会先和++结合,*(&p++),那肯定就不行了,不可以!

2.指针变量的移动

数组名就是数组首元素的地址

&数组名就是整个数组的地址,差别体验在向后移动

ptr=&a+1,整个数组的地址+1

*(ptr-1)此时向后移动一个单位(四个字节),指向4。 

 

这个题和上边的是非常相似的:

a为首元素地址,所以选C

3.二维数组

int (*p)[3]是数组指针,指向类型为int且元素个数为3的数组

二维数组的数组名是首元素地址:

*(p+0)就相当于p[0],*(*(p+0)+0)就是p[0][0]

p[0][0]是第一行第一个地址的值,即为n[0][0],也就是10; p[0]是第一行的地址,p[0]+1就代表在这一行偏移一位,*(p[0]+1)等价于p[0][1],也就是20; *p等价于*(p+0),也就是p[0],所以(*p)[2]等价于p[0][2],也就是30;

B

a[i]相当于 *(a+i)

a[i][j]相当于*(*(a+i)+j);以此类推! B

 每个元素占一个存储单元,说明都是char类型;

现在已知x[9][9] 地址为 0xf8b82  21c;

              x[4][4] 地址为 0xf8b82  140;

              求x[7][7]的地址

那我们必须知道之间相差多少个元素,一行的元素有多少:

为了好算,我们统一:x[4][9]= ....145,x[9][9]=...21c,那么相减就是中间5行的个数,21c-145(16进制计算)=D7(16进制),转化为10进制D*16+7=208,208/5=43,一行就有43个元素。

所以:x[7][7]就可以由x[9][7]减去2*43=86(10进制),相减转化为16进制=56

21A-56=1c4.所以答案为A

首先看到**a[3][4],下意识就要想到,会与方括号先结合,那么就是二维数组,共有12个元素,每个元素的类型是 **指针类型,12*4=48

 三、逻辑运算符

我们看到这样的代码,首先得有else就近匹配,就会让代码更容易看

第一个if语句执行时,a=1,b=2为真,执行后,a=1,b=3;

第二个if语句b!=2为真,但此时重要的一点是,逻辑运算符具有短路效应,||左边为真时,右边将不会执行。(同理,&&左边为假时,也不会执行右边)

所以printf打印时,a=1,b=3,c=3;

四、存储方式,输出格式

1.输出格式

整型数据表示格式:

八进制:0123(0开头)零

16进制:0x开头 0x123

输出8进制:%o;输出16进制:%0x;

所以,m原本就是8进制数,八进制输出就是123;但n是10进制数,需要转化为8进制成173

2. 

 printf("%%%%\n"); 输出结果是 %%

3.

 4.

  -为左对齐

 2.存储方式

此题涉及到大小端:

大端(字节序)低位在高地址,高位在低地址;

小端(字节序)低位在低地址,高位在高地址;

五、const修饰指针变量

做这个题目之前,我们先回顾一下:

 所以:const在*前面,就是修饰的指针变量所指向的值不能改变,叫常量指针

            const在*后面,修饰的指针变量不能改变(即内存地址不能改变),就叫指针常量

所以选D,A选项是都不可以改变

六、与字符串有关的

strcpy(源地址,目的地址),把目的地址字符串拷贝到源地址;

strcat(源地址,目的地址),把目的地址字符串追加到源地址;

p2+1->"BCD";p1+2->"cd";str+2->"z";

strcpy(str2+2,strcat(p1+2,p2+1));-> "xycdBCD"

选D

a数组的元素类型都是char*,p是二级指针,a作为数组名,是首元素的地址(char**),所以将a赋值给p;

调用函数,m也指向数组a的首元素,++m从第一个元素到了第二个元素"afternoon",输出afternoon 

七、求结构体的内存大小(内存对齐)

先看内存对齐规则:

结构体内存对齐规则
1. 第一个成员在与结构体偏移量为 0 的地址处。
2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
注意:对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。
VS 中默认的对齐数为 8
3. 结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍。
4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。

 

 以此类比,答案为C

位段:就是在结构体成员后面加了一个冒号和一个数字,数字代表:分配了几个比特位

位段意义在于节省空间

位段成员的类型必须指定为unsigned或int类型。

 同类型可以共用,但是不同类型需要重新开辟空间

unsigned:开辟4个字节,32位,a和b占用(19+11=30)此时开辟的空间只剩2个比特位;重新开辟四个字节,c占4个比特位,d占29个,加起来超过32,所以还需要再开辟

重新开辟4个字节

此时char属于另一种类型,需要独自开辟一字节

共13字节,但需要对齐,类型中最大的整数倍:16

八、功能型(观察)

 首先我们看到这么大的数,先用小的数来观察这段代码的功能:

 所以我们只需要观察9999的二进制中有多少1就可以:

9999转化二进制:1111100111 ;count=8

 总结

很多细小的问题我们得注意,回看慢慢进步!我们下期不见不散

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

碰到CTS问题我该如何处理?

一、什么是CTS&#xff1f; CTS测试全称为系统兼容测试&#xff08;Compatibility Test suite&#xff09;&#xff0c;CTS是为了测试手机是否符合google定义的兼容性规范&#xff08;Compatibility Definition&#xff09;。从而基于Android的应用程序能在基于同一个api版本的…

网页JS自动化脚本(四)修改元素的尺寸颜色显隐状态

修改元素尺寸 在定位到了元素之后, 我们就可以对元素进行一些修改了,我们先来修改元素泊宽度以及高度 window.onloadfunction(){var theElementdocument.querySelector("img.undertips-link-lefticon");theElement.style.width"100px";theElement.style.…

BL200EC如何与欧姆龙相连

1、欧姆龙 NX1P2 的 Port1 接到电脑的网口&#xff0c;Port2 接到 BL200EC 的 ETH1 网口。 欧姆龙 NX1P2 和 BL200EC 通电。 2、打开 Sysmac Studio 软件&#xff0c;新建工程&#xff0c;选择 NX1P2-9024DT&#xff0c;点击创建。 ​ 编辑切换为居中 添加图片注释&#xf…

【云原生】服务网格kiali开发环境搭建问题解析

文章目录背景环境准备参考连接问题1&#xff1a;windows如何配置kiali开发环境问题2&#xff1a;kiali如何配置k8s连接问题3&#xff1a;kiali启动报错关键词&#xff1a;方便你们找到我背景 kiali&#xff08;凯莉&#xff09;是istio技术对应的管理系统&#xff0c;其前端为…

概率论与数理统计(1)——基本概念

引言 确定性&#xff08;必然&#xff09;&#xff1a;一定发生与一定不发生 随机现象&#xff1a;可能发生也可能不发生 随机事件 实验&#xff1a;对事物进行观察测量 随机试验&#xff1a;&#xff08;1&#xff09;在相同的条件下可以重复&#xff1b;&#xff08;2&…

oracle使用小结

1.安装时oracle12C去除勾选为创建为容器数据库 2.cmd命令 <1>.sqlplus/nolog // –运行sqlplus命令&#xff0c;进入sqlplus环境&#xff0c;nolog参数表示不登录&#xff1b; <2>.conn/as sysdba // **–以系统管理员(sysdba)**的身份连接数据库&#xff1b; …

[附源码]计算机毕业设计springboot健康医疗体检

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

记录--用JS轻松实现一个录音、录像、录屏的工具库

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 最近项目遇到一个要在网页上录音的需求&#xff0c;在一波搜索后&#xff0c;发现了 react-media-recorder 这个库。今天就跟大家一起研究一下这个库的源码吧&#xff0c;从 0 到 1 来实现一个 R…

EL 与 JSTL(1)( EL 表达式基础知识)

EL 表达式用美元符号“$”定界&#xff0c;内容包含在一对花括号“{}”中&#xff0c;例如&#xff1a;${expression}。 EL 表达式语法很简单&#xff0c;它最大的特点就是使用很方便。 1.EL 表达式特点 &#xff08;1&#xff09;在 EL 表达式中可以获得命名空间&#xff08;…

uni-app入门:全局数据共享方案之mobx

1.全局数据共享介绍 2.准备工作 3.使用说明 3.1 page页面进行全局数据共享 3.2 component组件进行全局数据共享 1.全局数据共享介绍全局数据共享也叫作状态管理,主要用于组件间数据共享问题的处理.实际开发中常用的实现方案:vuex、redux、mobx&…

西山科技将于12月6日上会:年收入2亿元,耗材收入成为新增长点

11月29日&#xff0c;上海证券交易所科创板披露的信息显示&#xff0c;重庆西山科技股份有限公司&#xff08;下称“西山科技”&#xff09;将于2022年12月6日接受科创板上市委的现场审议。目前&#xff0c;西山科技已经更新了招股书&#xff08;上会稿&#xff09;。 据贝多财…

uni-app 使用 webview运行到小程序,打开萤石云视频

由于微信小程序特殊性&#xff0c;导致APP和h5适应的它都适应不了&#xff0c;因此&#xff0c;不得不对小程序做一些特殊的处理。 问题一&#xff1a;微信小程序无法打开web-view 的URL 相对于APP和H5而言&#xff0c;微信小程序比较严格&#xff0c;对于打开外链这种功能&a…

综述向:强化学习方法梳理(持续更新)

最近组内需要做强化学习相关研究&#xff0c;因为面对的是新项目&#xff0c;同事们对强化学习的原理都不太了解&#xff0c;我们就计划轮流在组内做一些不定期分享&#xff0c;补充相关的基础知识。于是我对强化学习的一些经典算法进行了梳理&#xff0c;并在此进行记录&#…

Observability:从零开始创建 Java 微服务并监控它 (一)

在本教程中&#xff0c;你将学习如何使用 Elastic 可观察性监控 Java 应用程序&#xff1a;日志、基础设施指标、APM 和正常运行时间。通过本教程&#xff0c;你将学到&#xff1a; 创建示例 Java 应用程序。使用 Filebeat 提取日志并在 Kibana 中查看你的日志。使用 Metricbe…

DPPE-PEG-Fucoidan 岩藻多糖-聚乙二醇-二棕榈酰基磷脂酰乙醇胺

DPPE-PEG-Fucoidan 岩藻多糖-聚乙二醇-二棕榈酰基磷脂酰乙醇胺 中文名称&#xff1a;岩藻多糖-二棕榈酰基磷脂酰乙醇胺 英文名称&#xff1a;Fucoidan-DPPE 别称&#xff1a;DPPE修饰岩藻多糖&#xff0c;DPPE-岩藻多糖 存储条件&#xff1a;-20C&#xff0c;避光&#xff…

Java - 缓冲输入输出流 (BufferedInputStream、BufferedOutputStream)

缓冲 Buffer 它是内存空间的一部分&#xff0c;在内存空间中预留了一定的存储空间&#xff0c;这些存储空间用来缓冲输入或输出的数据&#xff0c;这部分空间就叫做缓冲区&#xff0c;缓冲区是具有一定大小的。 数据传输速度和数据处理的速度存在不平衡&#xff0c;例如每秒要写…

SwiftUI教程之如何在 Xcode 14 中创建曲线导航栏动画

让我们开始打开 ​​Xcode 14。我们将在 ContentView 中执行所有代码。首先,我要添加一些资产。 现在我们可以转到 ContentView 并开始编码了!💯 我们将要实现@Environment 协议、GeometryReader 和路径。 SwiftUI 中的@Environment 协议是什么? 使用Environment属性包…

用Python制造雪景图,体验 “ 人工下雪 ” 得快乐~

前言 大家早好、午好、晚好吖 ❤ ~ 今天起床&#xff0c;一看温度&#xff0c;赶忙穿上我的秋裤 一到外面&#xff0c;那风呼啦呼拉拉得吹&#xff0c;感觉我魂都跑了 别的地方已经下雪&#xff0c;而我才刚降温&#xff0c;而且还是骤降 都开始学习Python了&#xff0c;是时候…

计算机组成原理习题课第四章-2(唐朔飞)

计算机组成原理习题课第四章-2&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…

WRKY转录因子通过促进GhMKK2介导的类黄酮生物合成调节棉花对尖孢镰刀菌的抗性

文章信息 题目&#xff1a;Group IIc WRKY transcription factors regulate cotton resistance to Fusarium oxysporum by promoting GhMKK2-mediated flavonoid biosynthesis 刊名&#xff1a;New Phytologist 作者&#xff1a;Lijun Wang&#xff0c;Chen Wang,Xingqi Guo…