摘要:文章介绍了编程基础:变量可变,常量不变,字面量是初始赋值。我们在学习编程的时候,经常听到这3个词:常量变量字面量那么它们是什么意思呢?我们写 2 行代码,来帮助我们理解。int a = 666; const int b = 777;变量在第 1 行代码中,a 是变量,666 是字面量。或者我们可以说,变量 a 的初始值是字面量 666。常量在第 2 行代码中,b 是常量,因为它被 const
认识我们今天来简单地认识一下命令行参数。命令行参数是什么:执行程序时,我们可以不在程序的内部进行编码,而通过命令行传值给 C 程序,实现从外部来控制程序。此时从命令行传的值,就叫做命令行参数。如下行代码int main(int argc, char* argv[])它就是带有命令行参数的 main() 函数,其中:argv[] 是一个指针数组,指向传递给程序的每个参数argc
再本篇文章中,我们将通过实操一个小题目,来理解与运用冒泡排序冒泡排序是什么,怎么工作的?冒泡排序是一种排序算法,它可以将一堆无序/乱序的元素,排列成有序的元素。它的工作方式就和在水底吐泡泡一样:一次吐一个泡泡,泡泡吐出来后向上冒,而当这个泡泡向上冒的运动结束时,它的位置处于当前水的最高处(水面上)的。如图:我们每一次冒泡的过程中,都会从第一个数开始,不断地向后进行比较。以排升序(从小到大排)为列:
在本篇文章中,我们将通过实现一个小游戏,来带领大家一起实操C语言程序设计的前3大步骤:定义目标设计程序编写代码游戏简介:21点又名黑杰克(Blackjack),起源于法国,已流传到世界各地,有着悠久的历史。在世界各地的赌场中都可以看到二十一点,随着互联网的发展,二十一点开始走向网络时代。该游戏使用除大小王之外的52张牌,游戏者的目标是使手中的牌的点数之和不超过21点且尽量大。设计思想:第一步:定义
先说结论:数组名表示的是数组首元素地址但有2个例外,在这2个例外中,数组名表示的是整个数组:数组名单独在sizeof()的括号里面数组名在&后面我们先来验证最重要的结论,然后验证2个例外。1、验证:数组名 == 数组首元素地址代码验证:int arr[3] = { 1, 2, 3 };//初始化数组 printf("%d\n", *arr);//直接解引用arr printf("%d
除了下面2种情况以外,数组名就是数组第一个元素的地址,没有任何区别 数组名在sizeof()的括号里面,数组名代表的是整个数组,算的是整个数组的长度,单位是byte 数组名在&后面,数组名代表的是整个数组,取的是整个数组的地址代码验证:#include <stdio.h> int main() { int arr_1[3] = { 0 }; int arr_
递归是一项很巧妙的技术,它的思想是将一个大问题,拆分成一个个性质相同的细小问题的解题思路与方法。在C语言中,我们利用函数自己调用自己来实现递归。(包括直接调用与间接调用)。我们通过做一个小题目,来领略一下递归的巧妙之处。题目: 小乐乐上课需要走n阶台阶。因为他腿比较长,所以每次可以选择走一阶或者走两阶。求他一共有多少种走法?递归思想解题:”n阶台阶,共有多少种不同的走法“——这是一个大问题,接下来
通过阅读这篇文章,你可以知道以下4点:柔性数组是什么柔性数组怎么声明柔性数组如何使用为什么不用指针一、柔性数组是什么柔性数组其实是结构中的一个结构成员,它只能在结构中使用。它的英文名为Flexible Array,也就是灵活的数组。怎么体现灵活呢?柔性数组在一开始,是不被分配空间的。直到你使用的时候,你想让它变多大,它就变多大。而且,如果使用过程中,空间又不够了,你可以再次给它增加空间。这就是柔性
while与do...while都是C语言中的两种循环,它们非常相似,但特点明显。whilewhile的特点是:先想再干它是入口条件循环,即在循环的每次迭代之前,都会检查测试条件,如果一开始条件就不满足的话,这个while循环根本一次都不会执行。而只有当表达式(下面代码中的expression)为真时,才执行循环体(下面代码中的statement)。执行完毕后,再返回expression语句,进行
通过这篇博客,你可以知道关于段位的4点:位段是什么,该如何声明位段和结构体的区别位段内存对齐缺点何在(跨平台问题)1、位段是什么,该如何声明我们先来写一个位段的声明:struct A { int a:2;//注意,这里有一个冒号,后还接了个数字 int b:4;//另外,段位成员只能是整型家族成员,不可以为浮点数 int c:10; int d:32; };现在我们就创建了一个位段的
一、结构是什么,我们为什么需要结构?先说结论:结构其实是一种我们自定义的类型,或者你也可以将其看作是一种超级数组。和char、short、int一样,结构也只是一种数据类型。但它相较于系统给定的其它类型,它具有它的特殊性。我们知道,如果我们要存放一个人的名字,可以用char类型的数组来存放。要存放一个人的年龄,可以用short或int类型的变量来存放。但如果我想一次性把年纪和名字存放在一起该怎么做
通过实现一个静态通讯录,来回顾一下结构体知识。涵盖的知识点有: • 建立结构体声明 • 定义结构体变量 • 初始化结构体 • 访问结构体成员 • 结构体数组 • 嵌套结构体 • 指向结构体的指针 • 利用指针访问结构体 • 传递结构体
C 库函数 - memmove() cpulspuls官方描述—<string.h> 描述: memmove 函数,和memcpy一样,可以将 num 个字节的值从源指向的位置直接复制到目标指向的内存块。不过memcpy一般用来处理2个独立的内存空间而memmove通常用来处理2块重叠的内存空间 我们可以这样说:对于重叠的内存块,使用 memmove 函数是一种
C 库函数 - memcpy() cpulspuls官方描述—<string.h> 描述:memcpy函数,可以将 num 个字节的值从源指向的位置直接复制到目标指向的内存块。它的功能很像strcpy,但strcpy只可以复制字符串,而memcpy可以复制一切。它的返回值只有1个:目标处的地址。另注意:它的对象应该为2个独立的内存空间,不宜重叠。而对于重叠的内存
C 库函数 - strstr() cpulspuls官方描述—<string.h> 描述: strcmp函数,是用来在一个字符串中,查找另一个字符串的。也就是说,它告诉我们,字符串2是否为字符串1的子集。它的返回值有2个:是子集,返回母集中,子集的首地址不是子集,返回NULL 声明:const char * strstr ( const char * str1,
C 库函数 - strcmp() cpulspuls官方描述—<string.h>描述: strcmp函数是用来比较字符串大小的。 我们给strcmp传2个字符串地址,strcmp会给我们一个int类型的返回值。如果第1个更大,则返回大于0的值如果第1个更小,则返回小于0的值如果2个字符串一样大,则返回0声明: int strcmp ( const char * s
C 库函数 - strcat()cpulspuls官方描述—<string.h>描述:strcat函数是用来追加字符串的,将一个字符中加到另一个字符中的后面。声明:char * strcat ( char * destination, const char * source );代码实现:#include <stdio.h> #include <assert
代码实现:#include <stdio.h> #include <assert.h> char* My_strcpy(char* to, const char* from) { assert(to && from); //strcpy的返回值为目标字符串的首地址 //因为后面我们会更改指向目标字符串首地址指针的值 //所以现在先记录下来,以便函
先说结论:当有符号数与无符号数做运算时,有符号数会隐性地变成无符号数深入探讨一:我们都知道,sizeof(i)的值是4。但观察下面一段代码,我们会发现,sizeof(i)居然小于-1。这期间发生了什么呢?#include <stdio.h> int main() { int i = -1; if (i > sizeof(i)) printf("i大\n"); els
题目: 编写一个程序,声明一个int类型的3*5二维数组,并用合适的值初始化它。 1. 该程序打印数组中的值,然后各值翻倍(即是原来的2倍),并显示出各个元素的新值。 2. 编写一个函数显示数组的内容,再编写一个函数把各元素的翻倍。 3. 这两个函数都以函数名和行数作为参数。
先说结论:区别一:sizeof是用来求变量/类型在内存中所占的空间大小,关注的是空间,单位是字节。strlen求的是字符串长度,关注的是字符中有效的字符,单位是有效字符的个数。区别二:sizeof是操作符,只有在运算对象为类型的时候,才必须带圆括号,其他时候,圆括号可有可无。如sizeof(int)时,必须带括号,sizeof ‘a' 时,括号可有可无。strlen是库函数。是函数,使用时后面的圆
利用设计简易计算器,来学习【回调函数】 因为这一次的重点并不在计算器的实现,所以计算器很多细节并不关注。比如:没有按位操作、除法没有使用浮点数、等等......头文件部分:#pragma once //菜单 void Menu(); //加减乘除 int Add(int a, int b); int Sub(int a, int b); int Mul(int a, int b); in
怎么理解数组指针?我们可以借助其他类型的指针来理解,如,整型指针,就是指向整型类型的指针。字符指针,就是指向字符类型的指针。所以数组指针,其实就是指向数组的指针。那这2个指针有什么区别?int arr[3] = {1, 2, 3}; int* p1 = arr;//整型指针变量 int (*p2) [3] = &arr;//数组指针变量区别在于:int* p1指向的其实是arr数组的首元
简单认识:我们在浮点数中,采用IEEE 754标准,使每一个数都采用的方式来表示。其中为符号位,S只能为 0 或 1 ,0表示这个数为正数,1表示负数。M为有效数字位,也就是真实数经过小数点浮动后的数字,M的范围是1的闭区间至2的开区间,也就是1 ≤ M < 2。E是指数位,表示的是小数点浮动的距离,如0b1110.1 = 1.1101 * 2^3,其中E为3。举个例子:flaot a =
当char类型与int类型的数进行运算时(如下代码),char类型需要进行整型提升。int a = 1; char b = 1; int ret = 0; ret = a + b;那么整型提升的规则是什么呢?(以下皆是在补码上进行补位)有符号数:高位全部补符号位。无符号数:高位直接补0。有符号数如, char b = 1; 1的补码是:000000000000000000000000000000
通过分析,我们发现年与年之间,天数唯一有可能不同的是2月。所以我们只需要在用户输入的是2月时,去判断该年是否为闰年。如果是,则天数+1。如果不是,则按正常天数输出即可。#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int Is_leap_year(int year) { return (((year % 4 == 0)
输出x图形
学习学语言笔记:认识C语言框架
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号