自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C语言】15.联合和枚举

上述的结构其实设计的很简单,用起来也方便,但是结构的设计中包含了所有礼品的各种属性,这样使得结构体的大小就会偏大,比较浪费内存。所以我们就可以把公共属性单独写出来,剩余属于各种商品本身的属性使用联合体起来,这样就可以介绍所需的内存空间,一定程度上节省了内存。联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员)。当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。的整数倍,要对齐到最大对齐数的整数倍,也就是。

2024-06-18 00:34:41 387

原创 【C语言】14.自定义类型:结构体

位段的声明和结构是类似的,有两个不同:位段的成员必须是int或signed int,在C99中位段成员的类型也可以选择其他类型。位段的成员名后边有一个冒号和一个数字。int _b : 5;位段中的位,指的是二进制位(bit位)。int _a : 2;就是a占2个bit位。int _b : 5;就是b占5个bit位。那我们可以把这个位段写成这样吗?答案是:不可以。一个整型4个字节,32个bit位。50直接超了。为什么会出现位段呢?比如:如果_a。

2024-06-17 00:39:46 811

原创 【C语言习题】30.使用指针打印数组内容

先定义一个数组,使用指针打印数组内容那就是说我们可以通过对指针解引用,来访问对应的数组元素。我们可以设置一个for循环,每次对指针进行自增或其他操作,来达到对不同元素的访问。类型(int类型4字节,char类型1字节)的第一个字节,跳过每个。数字小的时候可能看不出什么,但是数字大了就可能会打印奇怪的东西。写一个函数打印arr数组的内容,不使用数组下标,使用指针。arr是一个整形一维数组。使用指针打印数组内容。注意不要越界访问哦。

2024-06-14 23:25:37 310

原创 【C语言】13.数据在内存中的存储

大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。

2024-06-13 01:44:59 1101

原创 【C语言】12.C语言内存函数

memcpy:内存拷贝memmove:内存移动memset:内存设置memcmp:内存比较。

2024-06-11 23:24:31 1007

原创 【C语言】11.字符函数和字符串函数

是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会将对应的错误码,存放在。通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0。中,而一个错误码的数字是整数很难理解是什么意思,所以每一个错误码都是有对应的错误信息的。C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。个字母,如果提前发现不一样,就提前结束,大的字符所在的字符串大于另外一个。函数打印完参数部分的字符串后,再打印一个冒号和一个空格,再打印错误信息。

2024-06-10 22:35:25 1206

原创 【C语言】10.C语言指针(5)

因为我编译的环境是x64,所以是8,如果是x86的环境下编译,那么就是4。因为我编译的环境是x64,所以是8,如果是x86的环境下编译,那么就是4。因为我编译的环境是x64,所以是8,如果是x86的环境下编译,那么就是4。是对一个数组的地址的解引用,访问的是一个数组。因为我编译的环境是x64,所以是8,如果是x86的环境下编译,那么就是4。因为我编译的环境是x64,所以是8,如果是x86的环境下编译,那么就是4。因为我编译的环境是x64,所以是8,如果是x86的环境下编译,那么就是4。

2024-06-08 20:09:58 905

原创 【C语言】10.C语言指针(4)

如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。这个程序排序整型数据是没问题的,但是能排序字符数组吗?:base指向的数组元素中一个元素的大小,单位是字节。回调函数就是一个通过函数指针调用的函数。函数进行比较,那么谁就来提供比较函数。:指向待排序数组的第一个元素的指针。这个函数是用来对数据进行排序的,

2024-06-02 02:17:44 1134

原创 【C语言】10.C语言指针(3)

那就意味着二维数组传参本质上也是传递了地址,传递的是第一行这个一维数组的地址,那么形参也是可以写成指针形式的。这段代码的意思是调用0地址处的那个函数,0地址处放的那个函数是无参,返回类型是void。数组指针变量是用来存放数组地址的,那怎么获得数组的地址呢?函数指针变量应该是用来存放函数地址的,未来通过地址能够调用函数的。所以,二维数组的数组名表示的就是第一行的地址,是一维数组的地址。有了数组指针的理解,我们就能够讲一下二维数组传参的本质了。都是用来传参的,只不过一个有参数,一个没有参数。

2024-06-01 15:34:06 1147

原创 【C语言习题】29.调整奇数偶数顺序

使用两个嵌套的 while 循环来移动元素。来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,这一步就相当于把第一个奇数和偶数换位置,奇数放前面,偶数放后面。定义整型变量i,定义整型变量sz来存放数组a的元素个数。进入main函数,先定义一个数组来存放元素。将数组a首元素地址和数组a的元素个数传递给了。指针向右移动,直到它指向一个。指针向左移动,直到它指向一个。输入一个整数数组,实现一个函数,指向数组的最后一个元素。所有偶数位于数组的后半部分。返回主函数,打印a数组元素。

2024-05-30 01:31:06 412

原创 【C语言习题】28.strlen实现

我们先把字符串元素存在数组里,然后一位一位的去访问,比较一位就统计一次,遇到。类型的值,表示字符串的长度,即从字符串开始到第一个空字符。字符之后的位置,所以需要减去 1 来得到正确的字符串长度。前面有几个字符元素,strlen原函数其实也是这个思路。进入main函数,定义字符数组arr存储字符元素。计算的是从字符串开始到末尾的字符数量。结尾的字符数组的指针,即一个字符串。,即当前指向的字符。++在后先用后加,所以循环结束后,),指向下一个字符。指针指向了字符串的末尾,即。的结果,即字符串的长度。

2024-05-30 00:56:59 452

原创 【C语言习题】27.字符串左旋

这个for循环干的其实就是先把数组第一个元素和(前端)最后一个元素互换位置,然后把第二个元素和(前端)最后第二个元素互换位置,依此类推。这个for循环干的其实就是先把数组(后端)第一个元素和最后一个元素互换位置,然后把(后端)第二个元素和最后第二个元素互换位置,依此类推。这个for循环干的其实就是先把数组(后端)第一个元素和最后一个元素互换位置,然后把(后端)第二个元素和最后第二个元素互换位置,依此类推。左旋几次,就执行几次。2.利用复制函数,先把后面的字符串元素存起来,再把需要左旋的前面的元素存到后面。

2024-05-30 00:32:03 989

原创 【C语言习题】26.字符逆序

首先,我们需要一个接收函数用来接收字符串,这里的字符串应该用字符数组存储。将一个字符串str的内容颠倒过来,并输出。函数执行完后,返回main函数,打印arr数组的内容。函数执行完后,返回main函数,打印arr数组的内容。函数,定义左指针left,初始指向字符串的起始位置。我们可以直接通过逆序的数组下标,输出逆序字符串。也可以将数组下标元素逆序交换,输出逆序字符串。简单来说,就是把最左边和最右边的元素位置互换。函数将str数组清零,为下一次读取做准备。函数将str数组清零,为下一次读取做准备。

2024-05-28 23:47:35 387 1

原创 【C语言】10.C语言指针(2)

这里我们发现&arr[0]和&arr[0]+1相差4个字节,arr和arr+1 相差4个字节,是因为&arr[0] 和 arr 都是首元素的地址,+1就是跳过一个元素。,数组元素的访问在编译器处理的时候,也是转换成首元素的地址+偏移量求出元素的地址,然后解引用来访问的。:这里的数组名表示整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素的地址是有区别的)这步做完后,最后的元素会是最大的数。:sizeof中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。

2024-05-27 23:23:33 1501

原创 【C语言】10.C语言指针(1)

32位机器假设有32根地址总线,每根地址线出来的电信号转换成数字信号后是1或者0,那我们把32根地址线产生的2进制序列当做一个地址,那么一个地址就是32个bit位,需要4个字节才能存储。同理64位机器,假设有64根地址线,一个地址就是64个二进制位组成的二进制序列,存储起来就需要8个字节的空间,指针变量的大小就是8个字节。如果p拿到n的地址就能修改n,这样就打破了const的限制,这是不合理的,所以应该让p拿到n的地址也不能修改n,那接下来怎么做呢?),这种类型的指针可以用来接受任意类型地址。

2024-05-26 21:25:08 1097

原创 【C语言】8.C语言操作符详解(3)

即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在潜在风险的,建议不要写出特别复杂的表达式。

2024-05-25 00:30:54 1210

原创 【C语言】8.C语言操作符详解(2)

/学生类型//成员变量int age;//全局变量int a;//局部变量//这个s1就是用Student这个学生类型创建的对象。return 0;//学生类型//成员变量int age;//全局变量//这里面的s4, s5 ,s6和上面的s3一个意思,就是写法不同//学生类型//成员变量int age;}s4 = { "小李",22,22.2 }, s5, s6;//全局变量struct Student s3 = { "王五",25,88.8 };

2024-05-24 01:17:12 690

原创 【C语言】8.C语言操作符详解(1)

从这三次变化里面我们可以看到,我们执行了一次n=n&(n-1),那么n最右面那个1就会消失。有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号位,剩余的都是数值位。上面这个方法有点问题,如果a+b的和超过了一个整型数据的存储大小,那么就计算不了了。这里就不过多赘述了。算术右移:左边用原该值的符号位填充(正数左边补0,负数左边补1),右边丢弃。不论-1的补码前面多少个1,只要和1按位与后就只看最后一位是不是1。反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

2024-05-24 01:15:48 766

原创 【C语言】9.C语言函数栈帧的创建和销毁

当我们调用完函数后,弹出ebp,和call指令下一条指令的地址后,esp指针往下走的时候就可以跳转到call指令下一条指令的地址。,也就是上面说的call指令的下一条指令的地址。ret指令返回的时候其实就是在栈顶返回了call指令的下一条指令的地址。这样才能返回之前的地方。就是靠的寄存器传递的,放到这样一个全局的寄存器里面就安全了。这个空间是为main函数开辟的,那么我们就称这个空间是为main函数开辟的一块函数栈帧。ebp出栈了之后,这个ebp指针指向了下面,因为这个出栈的ebp是为main函数创建的。

2024-05-23 01:42:01 1100

原创 【C语言习题】25.求两个数二进制中不同位的个数

编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?进入while循环,循环条件是输入不为空就继续。中最右边的1变成0,并将最右边的所有0变成1。的异或结果,并将结果存储在变量。求两个数二进制中不同位的个数。异或是相同为0,不同为1。中最右边的1变成0,因为。例如1999和2299。中有一个1被清除了。

2024-05-22 00:58:31 680

原创 【C语言习题】24.打印整数二进制的奇数位和偶数位

奇数位和偶数位有很多位,应该会用到循环。奇数和奇数,偶数和偶数里,相邻的差值为2,说明循环可能每次-2,然后进行位运算打印。位,然后与1进行按位与操作,结果为1表示该位是1,为0表示该位是0。然后打印出该位的值。获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列。:一个从31开始递减到1的循环,步长为2,用于遍历偶数位。:一个从30开始递减到0的循环,步长为2,用于遍历奇数位。分别打印出二进制序列说明应该要用到位运算。:与之前类似,打印出奇数位的值。打印整数二进制的奇数位和偶数位。

2024-05-21 22:27:16 327

原创 【C语言习题】23.统计二进制中1的个数

要返回参数二进制中 1 的个数,那么我们就要和参数的二进制形式来进行。小于等于31(因为整数通常有32位,从0到31)。前两次循环就是这样的,然后依次循环,直到i=32。我们肯定是要一位一位运算的,那么就少不了循环。为0,用于记录1的个数。满不满足条件都会执行。上面那个if语句只管。写一个函数返回参数二进制中 1 的个数。在每次循环中,创建一个掩码。如果是1,则增加计数器。循环结束后,返回计数器。例如,我们如果输入10。统计二进制中1的个数。这里我们主要来看一下。

2024-05-21 22:11:56 541

原创 【C语言习题】22.交换两个变量(不创建临时变量)

使用异或运算符(XOR)也可以实现两个整数的交换,而且不会导致溢出问题。异或运算的特性是任何数与自身异或的结果为0,任何数与0异或的结果为其自身。这样,a和b的值就交换了,而且没有使用任何临时变量。需要注意的是,这种方法在处理非常大的整数时可能会导致整数溢出的问题。在不允许创建临时变量的情况下,可以使用加法和减法来交换两个整数的内容。这样,a和b的值就交换了,而且没有使用任何临时变量。b现在是原来的a和现在的b的异或结果,即原来的a。a现在是原来的a和b的异或结果,即原来的b。b现在是a和b的异或结果。

2024-05-20 22:10:51 464

原创 【C语言习题】21.单身狗1

要找出只出现一次的数字,可以使用异或运算的性质。异或运算有一个特性:任何数和0做异或运算,结果仍然是原来的数,而任何数和其自身做异或运算,结果是0。因此,可以遍历数组中的每个数字,对所有数字进行异或运算。由于成对出现的数字异或结果为0,最终剩下的结果就是那个只出现一次的数字。在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。数组中有:1 2 3 4 5 1 2 3 4,只有5出现一次,其他数字都出现2次,找出5。所以,最终的结果是5,这就是只出现一次的数字。

2024-05-20 21:58:01 501

原创 【C语言习题】20.递归打印一个数的每一位

这里有个重要的地方,就是printf函数放哪里?以及递归到n=0的时候不能把0给打印出来。这个和之前第18题风格有点像,打印每一位我们可以把这位数n%10得到个位数。n/10就可以得到去掉个位数的其他部分,然后依次递归直到n/10=0。递归方式实现打印一个整数的每一位。

2024-05-19 01:37:17 209

原创 【C语言习题】19.递归求阶乘

的变量,用于存储阶乘的结果,初始值设为1。这是因为0的阶乘是1,而任何数乘以1都是它本身。首先要设置个变量存放输入的数 ,然后因为是非递归,我们就要用到循环的方法,每次让。首先要设置个变量存放输入的数 ,然后设置递归函数。递归和非递归分别实现求n的阶乘(不考虑溢出的问题)这一步是根据阶乘的定义,将当前的。减1,准备计算下一个较小的数的阶乘。是一个正整数,循环就会继续执行。减到0时,循环结束,此时。的乘积,不断循环直到。

2024-05-19 01:35:28 236

原创 【C语言习题】18.计算一个数的每位之和(递归实现)

例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。我们需要两个变量,一个用来存放输入的数字,一个用来存放计算数字之和的值。的变量,用于存储当前处理的数字最 后一位的值,初始值为0。的变量,用于累加各位数字之和,初始值为0。这里main函数比较简单,我们就来看一下。除以10,去掉最后一位数字,得到新的。,这样就得到了余数,也就是它个位数字。,去掉最后一位数字,得到新的。为0,此时递归结束,返回。输入:1729,输出:19。除以10的余数,赋值给。递归调用会一直进行,直到。

2024-05-19 00:12:52 382

原创 【C语言习题】17.递归实现n的k次方

如果k小于0,函数会递归调用自身计算n的-k次幂,然后返回1除以这个结果。这是因为n的-k次幂等于1除以n的k次幂。如果k大于0,函数会递归调用自身,每次调用将k减1,并将结果乘以n。如果k等于0,根据数学规则,任何数的0次幂都是1,所以直接返回1。这个函数里面要分上面说的3个情况,具体情况我后面会具体讨论。需要实现实现n的k次方,那么我们就要输入两个数n和k。因为要递归实现,我们就需要用到一个函数,来进行递归。编写一个函数实现n的k次方,使用递归实现。例如:如果要调用3^(-3),那么。

2024-05-19 00:09:30 234

原创 【C语言习题】16.计算求和

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,a+aa+aaa+aaaa+aaaaa的前5项之和,那么怎么用循环表示呢?求和,就需要一个求和函数。前五项之和,可以写一个循环,循环5次。例如:2+22+222+2222+22222。

2024-05-18 01:38:12 300

原创 【C语言习题】15.打印水仙花数

先写个循环,负责创建0~100000之间的数,创建好了才能从里面挑选水仙花数。最后我们要判断这个数本身和各位数字的n次方之和是否相等。因为需要用到n位数,所以需要写个函数,来输出数的位数。类型,否则可能会导致类型不匹配的编译错误。函数是C语言标准库中的一个数学函数,它定义在。我们还需要一个函数来求数字的n次方之和。从1开始,每次增加1,直到99999。类型的值,即计算结果的浮点数表示。函数用于计算一个数的幂次,即计算。为0,用于累加各位数字的幂次和。,则153是一个“水仙花数”。:开始另一个循环,条件是。

2024-05-18 01:21:55 641

原创 【C语言习题】13.喝汽水问题

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。第一次买一瓶花1元,第二次买一瓶花1元,第三次用前两个空瓶加上1元换两瓶。到最后一次时,手里已经没有钱了,即此时只有两个空瓶子换来一瓶汽水。3. 进入Buy函数后,如果只剩1元,那么就返回1。一共可以换20+10+5+2+1+1=39瓶可乐。5个空瓶可以换两瓶饮料,喝完一共还有3个空瓶。买20瓶,得到20个空瓶。还可以换一瓶可乐,喝完还有2个空瓶。第四次用前两个空瓶加上1元换两瓶。10个空瓶还可以换5个瓶子。

2024-05-18 00:58:31 821

原创 【C语言习题】14.打印菱形

的个数,从上往下每行先增加后减少,我们可以把这个菱形分成上面的三角形和下面的三角形。的,除了最长的那行可以不输入空格(如果你不想的话,想的话也可以前面加个空格)上半部分打印好了就打印下半部分。按照我们之前找到的规律,先打印空格,再打印。按照我们之前找到的规律,先打印空格,再打印。例如:第8行(第1行):这里面下部分总行数是6,当前行数是1。*号数=(下部分行数-当前行数)x2+1。首先这种图形题,我们就要去找规律。组成,我们可以分别打印这两个元素。,同样的,空格也可以分成两块。我们空格可以只打印到。

2024-05-17 02:20:43 405

原创 【C语言习题】11.使用函数实现数组操作

init函数和print函数简单,困难的是reverse函数。都说自己设计了,那么只要有上面这些函数和功能那就随便搞了。**要求:**自己设计以上函数的参数,返回值。交换好一对之后,继续交换靠里面的一对,直到。,跳出while循环,回到main函数。重要的是我们传递的实参和形参怎么写。然后进入循环,通过定义一个临时变量。,来交换左端和右端的数组元素。最后主函数返回0,程序结束。最后主函数返回0,程序结束。的每个元素初始化为0。的每个元素初始化为0。先进入main函数,的大小,赋值给sz。

2024-05-17 01:18:22 318

原创 【C语言习题】10.二分查找

的数组中查找指定的数字n,很容易想到的方法就是遍历数组,但是这种方法效率比较低。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?一般你都会猜中间数字,比如:150,然后看大了还是小了,这就是二分查找,也叫折半查找。,用于标记是否找到了要查找的数字,初始值为0。,表示要查找的数字,这里要查找的数字是7。:如果中间元素的值小于要查找的数字。:如果中间元素的值等于要查找的数字。标记为1,表示找到了要查找的数字。:如果没有找到要查找的数字。:如果找到了要查找的数字。:打印出找到的数字的下标。

2024-05-17 00:52:19 218

原创 【C语言习题】9.交换数组

先通过for循环打印arr1数组,然后打印回车,通过for循环打印arr2数组。通过for循环和中间变量tmp来交换了两个数组对应的元素。将数组A中的内容和数组B中的内容进行交换。利用最简单的三行交换代码来交换两个数组对应位置的元素。定义了两个数组,每个数组都存了3个元素。要交换数组的话首先要有两个数组。然后分别打印出来即可。【一维数组】交换数组。

2024-05-17 00:12:21 123

原创 【C语言习题】8.求平均值

首先我们需要一个能放十个数的数组,以及数组下标。其次,我们需要定义一个求和的未知量,来方便我们计算平均数。平均数可能有小数,所以要用float类型。定义arr数组存放10个数,i作为数组下标。sum代表这10个数的和,avg代表这10个数的平均数。编写一个程序,从用户输入中读取10个整数并存储在一个数组中。然后,计算并输出这些整数的平均值。我们通过for循环依次输入10个数并存放在数组里面,并求和。然后sum除以10,把平均数的值给avg。我们要先输入这10个数,然后加起来,接着除以10。

2024-05-16 21:58:29 255

原创 【C语言】7.C语言函数递归​

例如在栈区分配内存空间的时候,先给main一个空间,然后调用Fact,给他一个橙色空间,然后调用Fact,给他一个紫色空间,然后调用Fact,给他一个绿色空间,然后调用Fact,给他一个红色空间,然后调用Fact,给他一个棕色空间,然后调用Fact,给他一个青色空间。所以递归的思考方式就是把大事化小的过程。斐波那契数列:1,1,2,3,5,8,13,21,34,55,89……因为递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有重复计算,而且递归层次越深,冗余计算就会越多。

2024-05-16 21:34:57 1836

原创 【C语言】6.C语言VS实用调试技巧(2)

编译型错误一般都是语法错误,这类错误一般看错误信息就能找到一些蛛丝马迹的,双击错误信息也能初步的跳转到代码错误的地方或者附近。编译错误,随着语言的熟练掌握,会越来越少,也容易解决。我们打开监视,这个很奇怪吧,因为我们定义arr数组里面最多10个元素,现在却出现了arr[12],而且还有值。在VS上切换到X64,这个使用的顺序就是相反的,在Release版本的程序中,这个使用的顺序也是相反的。运行时错误,是千变万化的,需要借助调试,逐步定位问题,调试解决的是运行时问题。,但这里是15,说明有问题。

2024-05-15 21:28:33 269

原创 【C语言】6.C语言VS实用调试技巧(1)

bug现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题,简称程序漏洞。当我们发现程序中存在的问题的时候,那下一步就是找到问题,并修复问题。这个找问题的过程叫称为调试,英文叫debug。调试一个程序,首先是承认出现了问题,然后通过各种手段去定位问题的位置,可能是逐过程的调试,也可能是隔离和屏蔽代码的方式,找到问题所的位置,然后确定错误产生的原因,再修复代码,重新测试。

2024-05-15 21:23:06 731

原创 【C语言】5.C语言函数(2)

C语言编译器对源代码进行编译的时候,从第一行往下扫描的,所以函数调用之前先声明一下调用的函数。menu();return 0;3-5行是函数menu的定义,第8行是函数的调用。menu();return 0;如果把函数定义放在函数调用的后面就会报错。menu();return 0;这里的函数定义放在了函数调用的后面,但是第3行是函数声明,所以就不会报错。函数的调用一定要满足,先声明后使用;函数的定义也是一种特殊的声明,所以如果函数定义放在调用之前也是可以的。

2024-05-15 21:13:00 993

空空如也

空空如也

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

TA关注的人

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