自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 数组结构体的理解

有些结构体的类型具有类似数组的特性,这里小编称为数组结构体。

2022-11-23 20:51:42 276 1

原创 getchar()的用法

---------------------------------------------------------------------------------------------------------------------------- (本篇章为小编于学习过程中的感悟和总结,难免存在疏忽和错误之处,希望能够得到各位大神的批评指正)上述问题是在输入字符型变量时会出现,输入整型变量则不会出现,因为 "\n" 对于字符变量来说是合法输入,对于整型变量来说是非法输入。

2022-11-04 17:13:00 364

原创 位运算的那些事

位运算是C语言里的重要运算,常见于单片机操作寄存器的C语言编程中。下面用大小写字母相转换的例子来理解C语言中的位运算。

2022-09-17 12:08:58 324

原创 链表的理解

链表是一种常见的数据结构,链表有静态链表和动态链表之分,且通常和结构体一起使用。链表由头指针和结点组成,头指针指向结构体的变量的地址( 通常是第一个变量)。链表里有一系列结点,每个结点包括两部分:一个是存储数据元素的 数据域,一个是存储下一个结点地址的 指针域。

2022-09-10 12:33:21 315

原创 常用的内存管理函数

其作用是在内存的动态存储区分配 n 个长度为 a 的连续空间, 函数的返回值是一个指向分配空间起始地址的指针,如果分配未成功,则返回空指针 NULL。其作用是在内存的动态存储区分配一个长度为 a 的连续空间( a为无符号整形),函数的返回值是一个指向分配空间起始地址的指针(类型为void)。用数组存储数据时是静态分配,如果定义的数组的空间大了,会造成内存浪费,如果空间小了,那会造成数据溢出。指针 p 是最近一次调用 malloc 或 calloc 函数时的返回值,free 函数没有返回值。

2022-09-10 12:16:49 416

原创 结构体的理解( 结构体数组、指针、函数)

结构体的名称只能用来表示该结构体,系统编译时并不对它分配内存;当定义了结构体变量时,系统才会给结构体变量分配内存;可以说,结构体名称没有地址,结构体变量有地址。结构体有简单的结构体,也有数组结构体、指针结构体。通定义过结构体变量,可以访问结构体里的成员变量。

2022-09-08 19:13:37 443

原创 strcat(a, b)函数的使用

strcat() 函数可以用来拼接两个字符串。该函数的原型为 char* strcat(char* a, char* b);返回字符串 a 的地址(即首地址),同时字符串 a 也会被改变,变成 a、b 连接之后的字符,这就要求 a 有足够的地址空间来容纳连接后的字符的地址。4. a 要有足够的空间来收容连接后的字符串,以防止 a 和 b 占用的地址重叠。3. a 的 "/0" 会被 b 覆盖,并连接起来;2. 目标空间必须可修改;特别说明:1. a 和 b 字符串必须以 "/0" 结束;

2022-09-07 17:03:17 2252

原创 宏定义的理解

宏定义的作用从定义开始(#define PI 3.1415926) 到源程序结束,若要在某处终止该宏定义的作用,可用 #undef PI命令。宏定义可以嵌套使用,宏定义的字符串可以有之前宏定义过的标识符,也可以有变量,但在程序执行时,变量需在该宏定义使用之前定义好。宏定义的一般形式为: #define 标识符 字符串 (下面的例子以 #define PI 3.1415926 为例)#define宏定义不是语句,所以后面不用加分号,若加了分号,宏定义的时候会把分号算进去。

2022-09-01 19:27:16 1905

原创 C语言的学习小结

两个指针变量可以相减,如果两个指针变量都指向同一个数组中的元素,那么这两个指针变量的差值就是两个指针之间元素的个数。(本篇章为小编于学习过程中的感悟和总结,难免存在疏忽和错误之处,希望能够得到各位大神的批评指正)指针变量可以有空值,即该指针不指向任何地址,可表示为: p = NULL;.........

2022-08-29 13:04:44 924

原创 指向指针的指针的理解

指向指针的指针一般用在字符串上。指针数组一般用来存放字符串,字符串的双引号本身会返回地址。

2022-08-28 22:37:08 1854 1

原创 指针数组的理解

strcmp()函数可以用来比较两个字符串的大小,其并非比较长度,而是比较ASCII码。指针数组是一个数组,里面存放指针可以指向的元素,可存放地址、字符串。

2022-08-28 21:41:05 498

原创 指针函数的理解

下面的编程方法也能够达到同样的效果。二维数组里,列数不可省略,列数代表数组宽度。指针函数是一个函数,返回的是地址。

2022-08-28 14:30:16 537

原创 数组指针、函数指针的理解

定义一个指向函数的指针:int max(int a,int b);int (*p)();其特点就是指针作为参数。定义一个指向数组的指针: int (*p)[3];指向函数的指针,该指针可以作为其他函数的参数。

2022-08-27 21:54:00 200

原创 字符串与其指针的理解

定义一个字符类型的指针,可以将字符串赋给指针,指针指向该字符串,指针指向的是字符串的首个字符的地址。(本篇章为小编于学习过程中的感悟和总结,难免存在疏忽和错误之处,希望能够得到各位大神的批评指正)当指针指向字符串时,可以通过数组形式将字符串里的字符逐个输出,数组名即指针名。......

2022-08-27 19:45:15 831

原创 数组、字符串数组与其指针的理解

指针指向变量、数组时,指针指向的地址的元素可被更改;指针指向字符串、常量时,指针指向的地址的元素不可被更改,只能可读。指针指向变量、数组、字符串时,其地址对应的元素都可读。常规数组的表示方法为:char a[] = {'a','b','c','d','e','f','g'};且最后的元素以字符 '\0' 结束,需用for循环逐次输出。字符串数组的表示方法:char a[] = "abcdefg";且最后的字符以 '\0' 结束,可一次 printf() 输出。字符串数组与常规的一维数组、二维数组不同。...

2022-08-27 12:59:49 195

原创 二维数组及其指针的理解

a[0] 等价于 *(a+0) 等价于 *a,即第0行第0列的元素;a[1]+2 等价于 *(a+1)+2 等价于 &a[1][2],指第1行第2列的地址;a[1] 等价于 *(a+1),表示 第1行第0列的地址,即a[1][0] 的地址;(地址往下偏移1行);*(a[1]+2) 等价于 *(*(a+1)+2) 等价于 a[1][2],表示第1行第2列的元素;a 表示第0行第0列 的地址,的即第0行的首地址;( 参考地址为a[0][0]的地址 );a+1 等价于 &a[1],表示第1行的首地址;......

2022-08-26 14:20:18 556

原创 对于static和auto的理解(静态、动态局部变量)

用auto 和 static 定义的变量在函数里比较常见。auto变量存放在动态存储区,执行函数时开辟内存给变量,等函数执行完毕后释放内存空间。static变量存放在动态存储区,执行函数时开辟内存给变量,函数执行完毕后依然保留其内存,再次调用函数时该变量保留上一次的值,因为上一次的内存空间没有被释放,接下来再调用函数时无法给该变量开辟内存空间。(即static 定义的变量只定义一次)。

2022-08-19 21:58:20 1037

原创 对于a++*2的理解

对于a++*2,涉及到优先级的问题。++是单目运算符,*是双目运算符,优先级关系++大于*,则该语句先执行a++,后执行a*2。表达式a++*2的结果为a*2的结果,尽管有a++,那只是a的自增罢了,影响的是a,并非表达式a++*2的值。例如下程序:int a=0;(本篇章为小编于学习过程中的感悟和总结,难免存在疏忽和错误之处,希望能够得到各位大神的批评指正)while(n--)表示执行n次;a++*2表示a*2;...

2022-08-15 20:27:12 884

原创 条件运算符和条件表达式

当表达式1的值为真时,表达式2的值作为该条件表达式的值;当表达式1的值为假时,表达式3的值作为该条件表达式的值。条件运算符的写法为?: 条件运算符为三目运算符,需要三个表达式参与。由条件运算符组成的条件表达式的形式为: 表达式1?表达式2 : 表达式3。...

2022-08-12 15:27:43 359

原创 表达式、运算符之间的优先级与结合性

>= 从左往右。~ ++ -- + - * & sizeof() 从右往左(右结合)= += -= *= /= %= &= ^= |= = 从右往左(右结合)C语言中运算符的结合性有 左结合(从左往右) 和 右结合(从右往左),对于运算符的结合性还是有必要记一下,(尤其是右结合的)。............

2022-08-11 12:17:04 410

原创 scanf()的那些事

2>: 在使用scanf()时,若定义两个变量,赋值并以不同方式从键盘输入,如char a,b;这是因为a,b都是char型变量,空格存在于ASCII码中,输入严格按照顺序输入,则空格被输入,导致了出现第二种情景。若scanf("%c%c",&a,&b);改成scanf("%c %c",&a,&b);,键盘输入8 6,则输出8,6。...

2022-08-10 19:51:53 199

原创 i++、i--、++i、--i、i在printf()中的区别

假如程序改成i=8;,则这一行程序里的 i, ++i, --i, i++, i--,-i++,-i--,i是同时进行的,采用右结合形式,编译顺序从右到左,打印顺序从左到右。i++是先用再加,++i是先加再用。对于 i、++i、 --i、 i++、 i--、-i++、-i--、i在printf()函数的应用中,如果它们按顺序下来且独立成一行,如。...

2022-08-10 16:26:09 2708

原创 C语言的格式控制字符

8.4f表示输出宽度为8的4位小数的数(宽度范围包括整数、小数点和小数部分),在一定程度上%8.4f和%8.4lf输出的结果是相同的,但他们属于不同类型的数值(单精度浮点型和双精度浮点型);%4d表示输出宽度为4的整形数值,采用右对齐形式,实际宽度小于4时,左边以空格填充,当实际宽度大于4时,以实际宽度输出。float用%f,double用%lf,在一定情况下,同一个数用%f和%lf输出时,输出结可能相同,但不管怎么样,两者的格式最好分别对应,可以避免不必要的麻烦。...

2022-08-04 16:55:35 5884

原创 逗号表达式的理解

逗号表达式的一般形式为y = ((表达式1),(表达式2)),其y的值为整个表达式2的值;当去掉外围的括号,即y = (表达式1),(表达式2)时,其y的值为整个表达式1的值,这关系到优先级的问题。(本篇章为小编于学习过程中的感悟和总结,难免存在疏忽和错误之处,希望能够得到各位大神的批评指正)......

2022-08-03 22:31:01 2523

原创 int与char之间的赋值关系

int类型占据4个字节,char类型占据1个字节,假设char类型的常量赋值给int型变量,int型的值取char型常量对应的ASCII码的十进制数值;当int型常量赋值给char型变量时,把int的第一个字节(第一个8位)最靠近右边的那个数)转成该整形数值对应的ASCII码字符赋给char型变量。a对应的二进制为11101110110,十六进制为376,取最低位的字节的十六进制的值为76,二进制的值为01110110,对应的十进制和ASCII码字符分别为118和v,所以打印的结果为v。......

2022-08-03 21:47:15 4606 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除