1.函数的概念 在数学中,有函数这个概念,在C语言中也有这个概念。叫做function。 准确的来说,C语言中的函数二字就是由数学函数这个概念翻译而来的,C语言中的function更准确的翻译是子程序。但是由于它和数学中的函数用法相似,所以将它称为函数会更好理解。 那么为什么C语言中会有函数呢?因为C语言作为一种语言,它只提供一种语法规则,本身并不能执行程序。 我们可以用数学来类比C语言中的函数概念。注意,接下来所说的函数都是指C语言中的函数。 2.函数是什么? C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码。你可以将它理解为一个动作,一个执行活动。 5.函数的格式 其实库函数和自定义函数的格式都是一样的,只是一个无需自己再规定,一个需要自己先自定义。 格式: : ret_type:返回类型。
题目一: #include <stdio.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int *)(&a + 1); // &a取出的是整个数组类型是int(*)[5],&a+1类型也是int(*)[5],所以要强制类型转换为int(*) printf( "%d,%d", *(a + 1), *(ptr - 1)); return return 0; } 运行结果: 10 5 6. 题目七 int main() { const char* c[] = { "ENTER","NEW","POINT","FIRST" }; const char** cp[] = { c + 3, c + 2,c + 1,c }; const char*** cpp = cp; printf("%s\n", **++cpp); //POINT printf("%s\n", *-- * ++
C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,它们实际会指向同一块内存。
< sz;i++) { printf("%d ", *(P_arr + i)); } } //排整型的数组 int test1() { int arr1[10] = { 1,4,3,2,6,5,8,7,9,10 ; for(i=0;i<sz;i++) { printf("%d ",arr[i]); } printf("\n"); } void test() { int arr[10]={1,3,5,7,9,2,4,6,8,0 j * width, (char*)base + (j + 1) * width,width); } } } } void test2() { int arr[10] = { 1,3,5,7,9,2,4,6,8,0
1 sizeof和strlen的对比 在指针进行运算的时候,sizeof和strlen挺绕的,今天我们就重温一下这两个 sizeof是C语言的关键字,被用来计算某个数据在内存中占的空间大小,不会关心存放的是什么数据 strlen是C语言中的库函数,使用的时候需要引用头文件string,是用来计算字符串长度的,计算的时候是通过找到'\0'来返回值的,如果后面有其他字符,strlen也是不会继续计算的,如果没有'\0' 那么arr + 1 指向的是第二个元素,然后解引用得到2,pa - 1指向的是5最后的一块空间,运算之后解引用得到的就是5。 题目6: int main() { char* c[] = { "ENTER","NEW","POINT","FIRST" }; char** cp[] = { c + 3,c + 2,c + 1, cpp[-1][-1] + 1,上次的cpp是没有自增的,所以解引用之后指向的是c + 1位置,那么cpp[-1]就是c + 2,c + 2指向的是P,P的地址 - 1,也就指向了NEW中N的位置,+1
sharetype=blogdetail&sharerId=147064833&sharerefer=PC&sharesource=asciiletters&sharefrom=from_link 本文承接C语言初阶 calc(Sub); break; case 3: calc(Mul); break; case 4: calc(Div); break; case 5: 0; i < sz; i++) { printf("%d", i); } printf("\n"); } int main(void) { int arr[10] = { 9,8,7,6,5,4,3,2,1,0 < sz; i++) { printf("%d", arr[i]); } printf("\n"); } void test1() { int arr[10] = { 3,2,4,7,8,5,0,6,9,1 j * width, (char*)base + (j + 1) * width, width); } } } } void test3() { int arr[] = { 3,2,4,5,8,9,6,7,1,0
昨天讲完了C语言实现遗传算法,没看昨天或者之前文章的点一下历史消息或者这里: 遗传算法可视化项目(1):概述 遗传算法可视化项目(2):获取信息 遗传算法可视化项目(3):创建图的数据结构 遗传算法可视化项目 (插曲):关于距离的计算 遗传算法可视化项目(4):遗传算法 目前为止C语言的部分快要结束了,还差最后一个C语言和Python交互了,今天就讲这个。 C语言和Python交互方法多了去了,有Python调用C语言,也有C语言调用Python,一般情况下Python调用C语言比较常见,毕竟Python慢,调用C语言加快速度,提高性能,这里重点讲Python Python调用C语言方式我印象中也就三种方法:Python调用C语言的动态链接库(dll文件),Python调用C语言编译链接生成的可执行文件(exe文件),C语言为Python编写扩展模块。 我用的就是C语言为Python编写扩展模块的方式来实现交互的,实际上那个扩展模块并不是模块,因为复用性等于0,那个模块只能用在我的项目,换成其他的项目就等于废了。
add_executable(test test.cpp),(假设文件名为test),每次手动添加比较麻烦 解决方法 File -> Settings -> Plugins,选择Marketplace选项卡 搜索C/ C++ Single FIle Execution 安装后按提示重启CLion,以后每创建一个C++文件,在代码编辑区右键 这个插件就会自动帮你在清单文件里添加本来要手动输入的配置代码
{ count5 = 1; enemy5_bullet[i].x = enemy5[j].x + enemy5[j].width - 175; enemy5_bullet FlushBatchDraw(); Sleep(2); } EndBatchDraw(); return 0; } 如果有哪里不懂,可以问我,当然如果有哪里有问题,也欢迎大佬提出哦 项目文档 技术实现 - 游戏开发工具 采用VS2022,Easyx图形库,C语言/C++ - 游戏代码结构和模块划分 1.初始化游戏窗口 2.初始化游戏数据 3.循环游戏事件 编写玩家控制模块,碰撞模块 总结和展望 - 游戏开发过程中的经验和教训 增加我对C语言的使用熟练度,更好的掌握条件控制与循环控制程序运行 接触到一部分C++知识如IMAGE变量,MySQL数据库,多线程使用(基础版),有利于我之后进一步接触 C++ 对bug的调试更加熟练,同时掌握开发游戏最基础的逻辑,锻炼自己的逻辑思维 增加团队合作,增长团队合作精神
这是一款9*9的扫雷游戏 1.需求分析 我们需要编写一款C语言扫雷游戏,包含9*9 自定义格式等游戏格式 注意:(由于创作者水平有限)**!!**本款游戏未能实现UI设计前端知识。 游戏可以反复玩 甚至我们可以拓展多种玩法,例如:11x11、15x15、计时模式 游戏界面 2.程序框架设计 扫雷的过程中,布置的雷和排查出的雷的信息都需要存储,所以我们需要⼀定的数据结构(C语言讲完之后会讲到 / 打印行号(1到row) // 打印该行每个格子的内容 for (int j = 1; j <= col; j++) { printf("%c \n"); DisplayBoard(mine, row, col); // 显示地雷位置 } } 4.分文件实现 这一次我们分三个文件来讲解 (1)test.c #include 包含游戏主循环,直到胜利或踩雷 */ void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col); 5.
一 、知识铺垫 贪吃蛇涉及的知识:C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、win32API等 1.win32API介绍 Windows除了协调应用程序、分配内存、管理资源之外,同时也是一个很大的服务中心 C语言的system函数可以达到执行系统操作。 接下来介绍宽字符概念 宽字符 普通字符占一个字节,但是宽字符占两个字节,再简单一点讲一下,C语言的国际化特性相关的知识,过去C语言并不适合非英语国家使用,C语言最初假定字符都是单字节的,但是这些假定并不是再世界上任何地方都适用 后来为了使C语言适应国际化,C语言的标准中不断加入了国际化的支持。 <locale.h>提供的函数用于控制c标准库中对于不同的地区会产生不一样行为的部分。 下面代码演示的是 C语言默认的本地信息是什么?
这一节中,我们来详细讨论一下C语言里面的整数数据类型。 在C语言中,有上面表中列出的几种整型数据类型。 看到这里你可能想问,一个整数而已,为什么会需要定义这么多不同的类型出来呢? 用sizeof关键词来测量大小 和int一样,sizeof是C语言中的一个关键词。它是英文size of连起来的合成词。翻译成中文就是什么东西的大小的意思。 它能够测量C语言各种实体所占用的字节大小。 如果我们想看int所占用的字节大小c语言设计计算器,可以这样写sizeof(int)。执行后这段代码后,它的测量结果是一个整型。 这并未违反C语言标准,C语言标准规定高级别的类型取值范围不得小于低级别的类型,但是它们可以是一致的。 下面我们继续讨论一下,各种类型它们所能表达的数值范围具体是多少。 3. 不理解整型表达范围的原理不影响对C语言的使用。 char,short,int,long,long long分别占用了1,2,4,4,8个字节。
C语言 | 用指针对10个数排序 [640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1] 一、问题描述 用C语言实现简易版扫雷。 = col - 1; c <= col + 1; c++) { if (r < 0 || r >= MAX_ROW || c < 0 || c >= MAX_COL) { continue = col - 1; c <= col + 1; c++) { if (r < 0 || r >= MAX_ROW || c < 0 || c >= MAX_COL) { continue |0 1 2 3 4 5 6 7 8 --+------------------ 0|0 0 0 0 0 0 0 1 0 1|0 0 0 0 1 0 0 0 0 2|0 1 0 0 0 0 0 0 ----------------- ------1.开始游戏------ ------0.退出游戏------ ---------------------- 请输入你的选择: 更多案例可以go公众号:C语言入门到精通
strlen是c语言里面的库函数,是函数 作用的求字符串长度的,只能针对字符串 strlen统计的是字符串\0之前的字符个数 只能指针字符串,求字符串长度 不能求整形数组的 strlen直到遇到\0,不然是不会停下来的 5 //int a[3][2] = { 1,3,5 }; //那么这个二维数组剩下的位置就被0给填充了 //1 3 //5 0 //0 0 #include <stdio.h> int main() { int a[5][5];//5行5列 //每一行的数组名分别是a[0]、a[1]、a[2]、a[3]、a[4] + 3,c + 2,c + 1,c }; //c是上面的指针数组的数组名,指向的就是首元素的地址,指向的就是第一个字符串 //c指向的就是"ENTER" //c+1指向的就是"NEW c+1了 // 那么现在已经得到了c+1的地址了 // 现在进行解引用通过地址找到c+1, // // 原本放的是c+1,现在--就变成c了,就没有c+2了,--就是自减
例14:C语言实现输出4*5的矩阵。 解题思路:可以用循环的嵌套来处理此问题,用外循环来输出一行数据,用内循环来输出一列数据。要注意设法输出矩阵的格式,即每输出完5个数据后换行。 源代码演示: #include<stdio.h>//头文件 int main()//主函数 { int i,j;//定义变量 int temp=0; for(i=1;i<5;i++)/ /for循环嵌套,外层循环做行 { for(j=1;j<6;j++,temp++)//for循环嵌套,外层循环做列 { if(temp%5==0)//每5个数进行一下 printf("%d\t",i*j);//输出数 } } return 0;//函数返回值为0 } 编译运行结果如下: 1 2 3 4 5 C语言输出4*5的矩阵 更多案例可以go微信公众号:C语言入门到精通,作者:闫小林
五道选择题: 1、下面代码的结果是:( ) #include <stdio.h> int main() { int a, b, c; a = 5;//1 c = ++a;//2 b = ++c, z=++x,是先令x++再让z=x #include <stdio.h> int main() { int a, b, c; a = 5;//1 c = ++a;//2 b = ++c, c 代码1令a=5,代码2令a先++使a=6,再让c=a,使c=6。 B 2、如下程序的运行结果是( ) char c[5]={'a', 'b', '\0', 'c', '\0'}; printf("%s", c); A、'a' 'b' B、ab\0c\ 以下逗号表达式的值为( ) (x = 4 * 5, x * 5,x+5); A、25 B、20 C、100 D、45 解析:易错题,逗号表达式从左往右计算,先算x
一、目标 使用C语言在Windows环境的控制台中模拟实现贪吃蛇游戏 功能: ①贪吃蛇地图 ②蛇的移动 ③蛇吃食物 ④蛇撞墙或者撞到自己死亡 ⑤计算得分 ⑥暂停游戏 ⑦加速蛇身 ⑧计算得分 HANDLE hConsoleoutput, COORD pos ); 我们将想要设置的坐标信息放在pos当中,调用该函数将光标位置设置到指定的位置 使用: COORD pos = {10, 5} 可以把宽字符看做是长的字符 #include <stdio.h> #include <locale.h> int main() { setlocale(LC_ALL, ""); wchar_t c = L's'; wchar_t s = L"little_monster"; wprintf(L"%lc",c); wprintf(L"%ls",s); } (5)地图坐标 这里我们实现的地图是27*58 的,围绕边缘打印一周墙体 2、蛇身和食物 开始时,假设蛇长度为5,蛇身的每个节点用◆符号,在一个固定的连续5个坐标放蛇身 蛇的每个节点的x坐标都是2的倍数(宽字符),否则会出现一半节点在里边一半节点在墙里
1.习题一 #include <stdio.h> int main() { char a= -1; signed char b=-1; unsigned char c=-1; printf("a =%d,b=%d,c=%d",a,b,c); return 0; } 结果为 -1 -1 255 (1)a:char(有符号) 源码 : 10000000000000000000000000000001
从世界编程语言的范围看,C语言的排名稳居前三,只不过最近几年由于国内互联网发展的比较迅猛,比较前沿的开发语言用的多一点,似乎是觉得C语言的市场相对少了,放眼全球C语言排名依然很可观,有图为证。 ? 2017世界编程语言排名 有些人会觉得掌握了C语言不能总是去开发别的语言,现实中学好了C都能开发哪些项目? 一. 嵌入式软件项目 C语言是比较靠底层的语言,和设备直接打交道比较多,linux操作系统的源码绝大部分是C语言搞定。 芯片和底层驱动基本上也是C语言,大家在招聘简章上的驱动工程师最基本的要求就是掌握C语言。 这个行业C语言施展的空间还是很大。很多大型的游戏引擎底层图形库的实现也有C语言的功劳。 从理论上来说C语言能做任何事情,但不同场景可能是别的语言相对来说更加合适,效率更高。
我们可以先把我们定义的Houtput设置为NULL,然后再对其赋值;API是一个类型的函数,里面的函数就是针对我们的终端进行设置的,我们这里只是使用了API里面的一个函数进行了句柄的设置 ; (5) 就会打印数字0,这里的0x30就是0这个键的虚拟键代码; 2.本地模式的设置 我们在地图里面使用方块代表的是蛇身上的节点,我们使用星号代表的是食物,这些都需要宽字符进行表示,我们之前的使用百分号c以及百分号 3.游戏实现 (1)我们要创建一个头文件和两个源文件用来管理我们的项目;头文件负责相关的函数的声明,蛇的节点的结构体的定义,蛇的运动方向的枚举类型的定义,蛇本身的结构体的定义; (2)因为蛇的头部,蛇的移动的方向 在test.c文件里面,我们进行的是贪吃蛇的创建,创建了一个结构体类型的变量,我们通过gamestart这个函数开始我们的游戏,我们要向修改这个贪吃蛇的某些信息,就要把我们自己定义的贪吃蛇的地址传递过去 ,这个就是用链表把相邻的节点串联起来,我们要找到不同的节点之间的相同点和不同点,相同点就是他们的横坐标都是一样的,不同点就是他们的纵坐标是一个公差为2的等差数列,我们先设置初始的时候这个贪吃蛇的节点是5个