
C
一些简单笔记
please_say_d
说话直接点哈
展开
-
怎么向零基础的同学讲解栈?
我们不妨来讲个故事。现在有一条一人宽的巷子,如图所示,每次可以进去一个人,但是只能从最外面的人依次出来。我们用“最里面”和“最外面的人”来表示位置。上图中最后一个人“小朋友”出来了以后。变成如下所示。那我又再进来一个“小龙”呢?当所有人都出来了以后呢?因为我们每出来一个人,将“最外面的人”的位置往左移一个,所以没人的时候,“最外面的人”的位置就在“最里面”的左边。然后为了方便,...原创 2020-03-28 10:02:11 · 194 阅读 · 0 评论 -
C语言-结构体定义的几种方式
C语言-结构体定义的几种方式若struct后面接的是名字,则其为该结构体的名称。第一种是最基本的结构体定义,其定义了一个结构体A。struct A //第一种{ int a;};第二种则是在定义了一个结构体B的同时定义了一个结构体B的变量m。struct B //第二种{ int b;}m;第三种结构体定义没有给出该结构体的名称,但是定义了一个该结构体的变量n,...转载 2020-03-01 17:02:31 · 1479 阅读 · 0 评论 -
怎么访问数组指针指向的数组元素?
mark一下有关数组指针的题。问:char arr[100]={0,1,2,3...,99};char (* P_arr)[5]= (char (*)[5])arr;在以上伪代码中, * ( *(P_arr+1)+1)的值是多少?前几天思考了很久,总是有些混乱,原因是对数组指针这个概念还是理解的不够清楚。心动不如行动(此动非彼动),所以我今天就试了一试:#include<std...原创 2020-02-29 13:32:13 · 1348 阅读 · 1 评论 -
20_02_26笔记——《C语言陷阱与缺陷》
1.如下代码:char *r, malloc();r = malloc(strlrn(s)+strlen(t));strcpy(r,s);strcat(r,t);错误原因:1.malloc函数分配内存是否成功未做判断;2.给r分配内存后未释放;3.malloc未分配足够空间的内存。修改后为:char *r, malloc();r = malloc(strlrn(s)+strlen...原创 2020-02-26 14:10:09 · 131 阅读 · 0 评论 -
20_02_25笔记
《你必须知道的495个C语言问题》笔记第17章 风格17.4 一个很实用的小技巧,if语句判断时,用if(0x)而不是if(x0)这样可以避免将等号写成赋值号。因为if(x=0)这样的语句编译器并不会报错。17.5 printf函数的原型为:int printf(const char *format, …);函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值。...原创 2020-02-25 17:08:43 · 118 阅读 · 0 评论 -
20_02_24笔记
《你必须知道的495个C语言问题》笔记第16章 问题16.1 为什么这个循环只执行了一次?for(i=start;i<end;i++);{printf("%d\n",i);}a:因为for语句后加了分号,构成了循环执行空语句。试题56.在使用各类变量时,必须明确各类变量的____和_____,避免由于变量类型使用错误,导致出现变量溢出的情况。(值域范围、精度范围)58.为...原创 2020-02-24 13:56:51 · 151 阅读 · 0 评论 -
20_02_23笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第15章 可变参数列表15.1 为什么调用printf之前必须要包含<stdio.h>?a:调用可变参数前,它的原型说明必须在作用域内,编译器由此知道要用可变参数调用机制。在原型说明中用省略号“…”来表示可变参数。15.2 为什么%f可以在printf参数中同时表示float和double?难道它们不是不同类型?a:可变参数的可变部分使用...原创 2020-02-23 15:53:41 · 167 阅读 · 0 评论 -
20_02_22笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第14章 浮点运算14.1 大多数电脑都是用二进制来表示浮点数和整数。十进制数0.1用二进制表示起来是一个循环小数0.0001100110011…大多数十进制小数用二进制表示的并不完全准确。14.5 比较两个浮点数最好的方法就是要利用一个与浮点数的量相关的精确阈值(如0.00001)。试了一下,现在的c语言中,不能直接使用epsilon。14.6 直...原创 2020-02-22 16:14:53 · 105 阅读 · 0 评论 -
20_02_21笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第12章 标准输入输出库第13章 库函数12.35C语言中可通过freopen函数实现文件的重定向,即把一个打开的文件,重定向到另外一个文件上。freopen是头文件<stdio.h>中的一个函数,用于重定向输入输出文件。该函数可以在不改变代码原貌的情况下改变输入输出环境,但使用时应当保证文件是可靠的。函数原型FILE *freope...原创 2020-02-21 15:52:02 · 128 阅读 · 0 评论 -
20_02_20笔记——《你必须知道的495个C语言问题》
**《你必须知道的495个C语言问题》笔记第12章 标准输入输出库12.1、12.2getchar()一般情况下返回的是终端输入的字符,但是也可能是负值,因为EOF被定义为-1,所以这样定义是错误的:char c;c = getchar();应该这样定义:int c;c = getchar();getchar()函数遇到回车或者末尾为EOF(Ctrl+Z)时会结束。12.4原型为cha...原创 2020-02-20 13:45:19 · 124 阅读 · 0 评论 -
20_02_19笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第11章 ANSI/ISO C11.1 什么是“ANSI C”?a:1978年,《C程序设计语言》的第一版出版,书中介绍的C语言标准也被称作“K&R C”1989年,美国国家标准协会(ANSI)创立了一套C的标准,即ANSI C,或C89。1990年,将C89稍微改动,变成了ISO C或叫做C90。2000年,ANSI 发布新的C标准C99...原创 2020-02-19 12:49:51 · 213 阅读 · 0 评论 -
20_02_18笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第10章 C预处理器10.12 #if是条件编译,后不能加变量,它在程序编译前执行。#if 表达式#endif意思是如果if后面的表达式不为0的话就编译#if和#endif之间的语句,否则就不编译。10.13 sizeof操作符可以用在#if预处理指令中吗?a:因为预处理是在编译过程之前进行,此时还没有对类型等数据进行分析。10.20 宏定义中...原创 2020-02-18 14:52:04 · 107 阅读 · 0 评论 -
20_02_17笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第9章 布尔表达式和变量第10章 C预处理器9.1 在 C 语言标准(C89)没有定义布尔类型,所以 C 语言判断真假时以 0 为假,非 0 为真。现在普遍使用C99,所以此章节不具有参考价值。10.1~10.5 #define10.6~10.11 #include10.12~10.19 #if10.20 ~10.25 宏替换10.26~10....原创 2020-02-17 14:03:53 · 164 阅读 · 0 评论 -
20_02_16笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第7章 内存分配第8章 字符和字符串7.23 malloc有bug导致程序总是崩溃?a:malloc的内部数据结构哦很容易被破坏。标准C之前的常见情况:1.向分配的空间写入比分配的空间更多的数据;2.使用已经释放了内存的指针;3.分配大小为0的对象;4.重分配空指针;5.释放未从malloc获得的指针、空指针或者已经释放的指针。7.24 为什么在调用...原创 2020-02-16 12:22:34 · 186 阅读 · 0 评论 -
20_02_15笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第67章 内存分配7.1 为什么以下代码不行?char *answer;printf(“Type somrthing:\n”);gets(answer);printf(“You typed “%s”\n”, answer);a:指着answer未初始化,他可能指向任何位置或者为空指针。7.2 以下代码:char *s1 = “hello,”;...原创 2020-02-15 13:21:59 · 208 阅读 · 0 评论 -
20_02_14笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第6章 数组和指针6.1 我在一个源文件中定义了char a[6],在另一个源文件中声明了extern char *a。为什么不行?a:在一个源文件定义了字符串,而在另一个文件中定义了指向字符的指针。extern char *a的声明不能和真正的定义匹配。应使用extern char a[]。6.2 在C语言中“指针和数组等价”到底是什么意思?a:大...原创 2020-02-14 18:49:26 · 169 阅读 · 0 评论 -
20_02_13笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记第5章 空指针5.1 空指针是什么?a:空指针不会指向任何地方,不是任何对象或函数的指针。所以它不同于未初始化的指针。5.2 怎样获得一个空指针?a:在初始化、赋值或比较的时候,若一边是变量或指针类型的表达式,编译器可以确定另一边的常数0为空指针并生成正确的空指针。5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是...原创 2020-02-13 19:33:20 · 122 阅读 · 0 评论 -
20_02_12笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记4.3 *p++自增p还是p所指向的变量?a:++优先级高于(星号),p++和(p++)等价,他自增p并返回p自增前所指向的值。4.4 C语言中的指针算术总是自动地采纳它所指向的对象的大小,所以访问的时候不需要使用+sizeof(类型)的方法。4.5 我有一个char*型指针碰巧指向一些int型变量,我想跳过他们,为什么((int *)p)++;这样的...原创 2020-02-12 13:10:03 · 126 阅读 · 0 评论 -
20_02_11笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记3.1 这样的代码为什么不行?a[i]==i++。i++会改变i的值,i在同一表达式的其他地方被引用,无法判断该引用是新值还是旧值。3.8 为什么表达式printf("%d %d",f1(),f2());先调用了f2?逗号分隔得函数参数不是逗号操作符,函数调用的参数的求值顺序是不确定的。3.13 ++i和i++的区别?简单说:++i在i存储的值上增...原创 2020-02-12 11:58:03 · 118 阅读 · 0 评论 -
20_02_10笔记——《你必须知道的495个C语言问题》
《你必须知道的495个C语言问题》笔记2.12 怎样从/向数据文件读/写结构?最简单:fwrite(&somestruct,sizeof somestruct,1,fp);有fwrite原型:fwrite((char *)somestruct,sizeof somestruct,1,fp);可移植性:写一对函数,按域读写。2.13 编辑器在内存中留下了空洞?怎么控制对齐方式...原创 2020-02-10 18:13:25 · 119 阅读 · 0 评论 -
19_09_13 关于c语言中位域的理解
在实际接触的C语言项目中,我们会发现很多时候都用到了位域。初次听到时可能有些模糊,但其实是很好理解的,以下是经过参考各类资料和大牛的说法后本人对位域的一些理解。如有问题,欢迎告知,感谢之至。原创 2019-09-14 12:51:27 · 321 阅读 · 0 评论