c语言笔记
贝贝做码农
这个作者很懒,什么都没留下…
展开
-
for循环--下标越界导致死循环原因
arr数组只有10个数,但i循环到11,i下标越界(实际i=10时下标就越界,基于每个编译器和版本的区别,内存的布局有差异,vs2022在下标为11才会进入死循环),打印hehe出现死循环。,当这种情况发生时,就会发生死循环:死循环的原因是i==arr[11],把arr[11]赋值为0相当于把i赋值为0。随着数组下标的增长(i++),地址越来越高,有可能。的地址其实是最高的地址,数组首元素的地址最低;正常将arr[i]改为0,i在内存的布局就是这样。原创 2023-02-26 19:33:15 · 754 阅读 · 0 评论 -
动态内存函数题--易错题
把str传入给GetMemory函数,p接收,p是形参,所以str和p值相等,都是null,但p和str是存在不同内存地址的.如果我们传入的是&str,就是把str的地址赋给了p,就完美解决了不能指向同一块空间的问题了。理解:str指向空指针,定义一个char指针对他赋上NULL就是什么也不指向,注意注意!看了几篇文章的解答,一开始不懂char* str=NULL是如何指向的。p指向的空指针开辟100个字节的空间,但无关str,str仍指向空指针。问:下面test函数会输出什么?原创 2023-02-21 16:52:52 · 154 阅读 · 1 评论 -
C语言--无符号整型
今天在做一道题的时候,出现了无符号整型的概念,,之前由于没遇到,所以没有彻底理解无符号整形的意思,百度了很多都只讲了无符号整型和有符号整型的区别,没有怎么讲到无符号是怎么计算的,今天就来讲讲无符号整形unsigned。整型有无符号和有符号两种类型,在默认情况下声明的整型变量都是有符号的类型char有点特别,如果需声明无符号类型的话就需要在类型前加上unsigned。-1在内存中的补码为全1,这个值为无符号整型,因此无符号整型所能表示的最大值为4294967295。原创 2022-09-27 20:40:54 · 8113 阅读 · 3 评论 -
C语言--函数递归
递归函数是自己调用自己的函数,每次调用函数都会开辟新的内存空间,递归调用可以看成函数的嵌套调用 ,通俗来说,2.直到Fun(5)时,返回2给上一层的Fun(4),以此类推,返回到第一层得出结果16。递归效率不高,由于栈的大小不是无限大的,所以递归调用次数过多,会导致栈溢出。1.首先传入2,判断是否等于5,不等于5继续调用Fun()函数。根据下面递归函数:调用函数Fun(2),返回值是多少?调用函数Fun(2),原创 2022-09-25 16:23:39 · 620 阅读 · 0 评论 -
C语言中函数的声明和定义
函数的声明和定义不是一回事,声明是把函数的名字、函数类型以及形参类型、个数和顺序写清楚,以致编译成功。函数的定义是对函数功能的确立,包括指定函数名,函数值类型、形参类型、函数体等。在c中有.h头文件和.c源文件,其中头文件放函数声明,源文件放函数定义。c语言中函数的声明和定义非常相似,导致很多人分不清这两者之间的关系。原创 2022-09-25 15:51:58 · 713 阅读 · 0 评论