IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言字符串&结构体考试总结 -> 正文阅读

[C++知识库]c语言字符串&结构体考试总结

博客主页:https://blog.csdn.net/weixin_46094737?type=blog
欢迎评论?留言 ?如有错误敬请指正!
本文由小学生廉原创,首发于 CSDN🙉🙉🙉
未来很长,值得我们全力奔赴更美好的生活!💞💞💞?

今吾师以试应之,吾则欣然思其矣。

答题间,吾之思路如滔滔江水,或怦然而出,或差之枯竭。然吾均以之答曰,毕矣。

吾以其卷之易,甚之欣悦,俟察其答案,甚惊矣。

吾之曰较之答案,差之甚远,谬之过半矣。

吾深思其因,或以为答其间思之甚微,或粗心矣。今以之为点,后必深思远虑矣!!!

分析: A:字符型指针只能在初始化时整体进行赋值,或者说只能在初始化时指针指向一串字符首地址。

B:这种写法错误:str[ ]={“china”;}

C:正确

D:不能连等,会报错。char c[4]=d[4]=”abc” ;

分析:首先需要注意这个字符串中的\0,我们会以为\0作为字符串结束标志,会扰乱做题思维,这里的\01作为整体会以一个8进制数1去读取,所以本题各个字符作为循环条件会有:\t a \01 8 b c,一共6个。循环次数为6.

分析:A:字符型数组s需要给\0预留一个空间去存。

B:本题要求字符串赋值,单个字符赋值不对题目要求。

c:正确

d:在定义指针s的时候没有指向,没有地址去存将要赋值的字符串。或者说s是一个野指针

?分析:需要注意在打印是,后面的变量是一个s,s是一个指针,故打印出来的是s所指向的地址的值,只不过是以十进制进行输出的。

验证:

char *s="abcde";
	s += 2;
	printf("%d\n",s);//十进制地址 
	printf("%#p",s);//十六进制地址

?

分析:a:两个指针去内容相加赋值给c,没毛病

b:p2是一个指针,c是变量,没有取地址&

c:两个指针指向同一个地址,取得的内容当然一样

d:和a异曲同工,相乘而已

分析:a:字符型数组可以直接赋值

b:正确写法,指针指向数组首地址,然后赋值存入

c:先定义指针,然后指向一串字符首地址。

d:连等写法错误,不能连等,或者说,数组a只能在初始化是进行整体赋值。

分析:a:ps指针偏移2,但是还是指针,,没有取内容*,故错误

b:正确数组引用

c:ps指针,加上[2],表示指针偏移2,然后取内容,正确写法

d:指针偏移2,然后取内容,正确

验证:

	char *s;
	char ch[20]="progrming";
	s=ch;
	printf("%c",s[2]);

?分析:1、将p2+1所指内容(“fgh”)复制写入str+1(“BCDEFG”),字符串此时为:Afgh

2、?将p1+3所指内容(“d”)复制写入str+1(“h”),字符串此时为:Afgd

注意:strcpy(str01,str02)字符串赋值函数是将str02整体覆盖赋值写入str01中,str01中未覆盖的字符还存在,并未消失。

分析:a:可以这样赋值,只是将字符串从数组元素第3个开始写入。

验证:

	char s[51];
	gets(s+2);
	puts(s); 
	puts(s+2);

?b:注意scanf()遇到空格就结束,故无法存入

?c:注意c项是getchar(),一个字符一个字符写入,最后写入\0,这种当然也可以

d:和c项一样,一个字符一个字符写入,完全可以,只是些许麻烦而已

?注意条件:q=p,两个指针指向开辟的同一块区域地址,p指向q的首地址,q的内容为“def”,故p所指向的内容也是“def”。

分析:首先第一个\b退格符将a进行退格(干掉),第二个退格符将\退格,排除法直接c

字符函数头文件:ctype.h

字符串头文件:string.h?

分析:考试太马虎,不细心,经验主义错误太多

分析:本题还是在考察strcpy()字符串复制函数,“Hello”字符串整体赋值写入“welcome”中,计算的长度也是“Hello”的字符串长度为:5

注意此时的sizeof(str)值为:8,因为字符串复制函数,只是覆盖对应字符长度,不改变原有字符串长度,而且sizeof也将\0计算在内。

验证:

	char str[]="welcome"; 
	printf("%d\n",strlen(strcpy(str,"Hello")));
	printf("sizeof(str)=%d\n",sizeof(str));

分析:注意题目要求,long int类型为8字节,故本题的对齐字节数为8,char name[20]实际占20个字节,但是本题基本单位对齐数为8,故需要开辟3*8=24字节,long int再开辟8字节,最后int实际占16字节,为8字节开辟需要2个基本单位2*8,故三者相加为6*8=48字节。

分析:首先我们将struct HAR类型的数组h[2]值写清楚,h[2]={{1,2}{3,4}};然后h[0].p=&h[1]表示h[0].p指向h[1]的首地址即3的地址,h[1].p=h表示h[1].p指向数组h的[2]的首地址即1,然后再看题目中的打印,h[0].p)->x取x的值为3,,(h[1].p->y)取y的值为2。故答案输出32.

本题结构还是比较清晰的,就是需要仔细。认真读题!!!!!

分析:首先分析联合体的字节数为8,然后嵌套到第二个结构体中,记住一点,无论如何嵌套,基本对齐数永远是以最大类型变量为准,与联合体大小无关,故第二个结构体对齐数为8,这里的8并不是因为联合体的字节数为8才开辟的8,而是因为第二个结构体struct st中出现了double类型才开辟的8.故计算也比较简单:8+3*8+8=40.

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 18:45:50  更:2022-08-19 18:46:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 5:36:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码