首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C++

    C语言(指针)3

    5、指针运算 5.1指针 +- 整数 在 C语言(指针)1中,我们已经了解过了指针 +- 整数的情况,知道了指针 +- 整数的结果取决于它所指向的对象的类型,这里再来看一种指针 我们可以用上面学到的东西来模拟实现strlen函数,关于strlen函数在之前的文章 —> C语言基础 中已经介绍过,strlen函数的作用是计算字符串的长度,统计的是字符串中 “\0” 之前的字符个数 野指针在C语言中是非常可怕的,可能会导致内存泄漏、程序崩溃、安全漏洞、数据损坏等,我们一定要避免野指针的出现。 NULL是C语言中定义的一个标识符常量,值是0,0也是地址,但这个地址(空指针)是无法使用的,读写地址会报错,但不会构成野指针。 (3)指针变量不再使用时,及时置NULL,指针使用之前检查有效性; (4)避免返回局部变量的地址。

    21910编辑于 2024-10-16
  • 来自专栏C++破军之路

    C语言基础(3

    一、c语言中的常量 C语言中的常量分为以下几种: ·字面常量:“3.14”;“10”;“a”;"abcdef" ·const修饰的常变量:如下代码,输出结果为10,因为其已被const修饰,变为常变量 \" 只是单纯的为了输出单引号和双引号 #include<stdio.h> int main() { print("\'"); print("\""); return 0; } 3. include<stdio.h> int main() { printf("a\ta"); return 0; } 输出结果为 4.转义字符\ddd和\xdd ddd表示1~3个八进制的数字 本题答案为:14 五、注释 注释有两种风格:·C语言风格的注释/*xxxxx*/ 缺陷:不能嵌套注释 1 #include<stdio.h> int main() { int coding = 0; printf("你会努力学c语言吗?

    38610编辑于 2024-06-04
  • 来自专栏我的计算机成长

    初识C语言3

    这一篇文章我们从常见关键字开始说起,也是我们初识C语言最后一篇文章了,后面会给大家从各个方面详细的展开来分析,下一篇文章我们会分析分支语句与循环语句。   register return short signed sizeof static struct switch typedef union unsigned void volatile while  C语言提供了丰富的关键字 { //观察num1和num2,这两个变量的类型是一样的 unsigned int num1 = 0; uint_32 num2 = 0; return 0; }  10.2关键字static 在C语言中 13.结构体 结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。 比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。 这里只能使用结构体来描述了。 初识C语言到这里就结束啦!感谢烙铁们的阅读,后续会给大家带来更多有用的知识。

    28210编辑于 2024-01-23
  • C语言——指针(3

    字符指针变量 在指针的类型中,有一种指针类型为字符指针 char* 一般使用方法是: int main() { char ch='g'; char* p=&ch; printf("%c",*p); 0; } 运行结果: 因为str3和str4指向的是同一个常量字符串,C/C++会把常量字符串存储到单独的一个内存区域,当⼏个指针指向同⼀个字符串的时候,他们实际会指向同⼀块内存,但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块 过去我们有⼀个⼆维数组的需要传参给⼀个函数的时候,我们是这样写的: #include <stdio.h> void test(int a[3][5], int r, int c) { int i = ); } } int main() { int arr[3][5] = {{1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7}}; test(arr, 3, 5); return test(int arr[3][5], int r, int c) { int i = 0; int j = 0; for (i = 0; i < r; i++) { for (j = 0;

    34100编辑于 2025-10-13
  • 来自专栏修也的进阶日记

    C语言】错题本(3)

    char ucPim1; unsigned char ucData0 : 1; unsigned char ucData1 : 2; unsigned char ucData2 : 3; pstPimData = (struct tagPIM*)puc; memset(puc,0,4); pstPimData->ucPim1 = 2; pstPimData->ucData0 = 3; ucData1 = 4; pstPimData->ucData2 = 5; printf("%02x %02x %02x %02x\n",puc[0], puc[1], puc[2], puc[3] return 0; } 正确答案:B 接下来画图分析一下题目: 由图分析可知,最后puc[0]里存放的是00000010,puc[1]里存放的是00101001,puc[2]里存放的是00000000,puc[3]

    14410编辑于 2024-04-01
  • 来自专栏Initial programming

    初识C语言·指针(3

    ==str4) printf("str3 and str4 are same\n"); else printf("str3 and str4 are not same\n"); return 0 Add(int x, int y) { return x + y; } int (*p)(int, int) = Add; int main() { int a = 4, b = 8; int c int Add(int x, int y) { return x + y; } int main() { int (*p)(int, int) = Add; int c =(*p)(2,5); printf("%d ", c); return 0; } 像这样,可能看起来甚至没有直接写Add来的快? (均出自于C陷阱和缺陷) (*(void (*)())0)(); 这里突破点是void (*)(),这是函数指针,然后0的前面有括号,括号?

    19310编辑于 2024-10-16
  • 来自专栏学习

    C语言】指针总结3

    相反,3和4他们指向同一个常量字符串,C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。所以3和4是一样的。 2. 过去我们有一个二维数组的需要传参给一个函数的时候,我们是这样写的: #include <stdio.h> void test(int a[3][5], int r, int c) { int i = 0 ; int j = 0; for(i=0; i<r; i++) { for(j=0; j<c; j++) { printf("%d ", a[i][j]); } printf("\n"); } } int main() { int arr[3][5] = {{1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7}}; test(arr, 3, 5); return 0; } 这里实参是二维数组 int ( * parr1[3])(); int * parr2 3 ; int ( * )() parr3[3]; 答案是parr1 parr1 先和 [ ] 结合,说明parr1是数组,数组的内容是什么呢

    23110编辑于 2024-09-25
  • C语言分支语句(3

    5. switch语句 除了 if 语句,C语言还提供了 switch 语句来实现分支结构。 switch语句是一种特殊形式的 if...else... default: 语句3; } switch语句会根据 表达式 的不同值执行相应的case分支;如果都没有对应的情况,就执行 default分支。 注意: switch 后的 表达式 必须是整型表达式 case 后的值必须是整形常量表达式 5.1 if语句和switch语句的对比 练习:输入任意⼀个整数值,计算除3之后的余数 // 使用 if语句 #include <stdio.h> int main() { int n = 0; scanf("%d", &n); if(n % 3 == 0) printf } // 使用switch语句 #include <stdio.h> int main() { int n = 0; scanf("%d", &n); switch(n % 3)

    24410编辑于 2025-12-16
  • 指针3--C语言

    int a,int b) { return a+b; } int main() { int a=10; int b=20; int (*p)(int,int)=&add; int c= (*p)(10,20);//*可加可不加 printf("%d",c); return 0; }  通过函数指针变量p调用add函数。 3,函数指针数组 存放函数指针的数组。 int (*pf[3])(int,int)={add,sub,div}; 这就是一个函数指针数组,在函数指针的基础上,只需加上[ ],表明他是一个数组。

    11610编辑于 2025-12-30
  • 来自专栏全栈程序员必看

    使用clion创建c项目_C语言模板

    add_executable(test test.cpp),(假设文件名为test),每次手动添加比较麻烦 解决方法 File -> Settings -> Plugins,选择Marketplace选项卡 搜索C/ C++ Single FIle Execution 安装后按提示重启CLion,以后每创建一个C++文件,在代码编辑区右键 这个插件就会自动帮你在清单文件里添加本来要手动输入的配置代码

    3.5K10编辑于 2022-10-03
  • 来自专栏计算机二级C语言

    C语言入门笔记3

    函数 一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的主函数。(一个project可以有多个.c文件,但只能有一个main函数。 常见错误就是把多个题目程序代码.c放到一个工程下面,每个里面都有main函数,编译不报错,组建会报错。) C语言源程序中的函数是指完成特定数据处理任务、功能上独立的一个程序段。 /函数体 ....... return 0; //返回值 } 函数体的主要成分:变量定义序列+语句序列(VC6.0里面定义序列不能在语句序列之后) int r=5; int f=3; ; 3. 控制语句 控制语句是由特定的语句定义符组成,使用控制语句可实现程序的各种结构方式,从而实现对程序流程的控制。 C语言的九种控制语句。 3)转向语句:break语句、goto语句(尽量少使用,不利于结构化程序设计)、continue语句、return语句。 4.

    1.2K20发布于 2020-03-20
  • 来自专栏C++初阶高阶

    C语言初阶———指针(3

    9  8  7  6  5  4  3  2  1  0 8  9  7  6  5  4  3  2  1  0 8  7  9  6  5  4  3  2  1  0                                                 7 6 5 4  8  3  2  1  0  9 8  7  6  5  4  3  2  9  1  0                                                8  7  6  5  4  3  2  1  9  0                                                7 6 5 4 3 2 1  8  0  9 8  7  6  5  4  3  2  1  0  9                                                7 6 5 4 3 2 1  0 8  9  这是第一趟 }; int arr2[] = { 2,3,4,5,6 }; int arr3[] = { 3,4,5,6,7, }; int* arr[] = { arr1,arr2,arr3 }; /

    16410编辑于 2025-10-22
  • 来自专栏司钰秘籍

    经典C语言C++项目,雷霆战机

    = true; enemy3_bullet[i].x = enemy3[j].x + enemy3[j].width / 2; enemy3_bullet[i].y = enemy3 FlushBatchDraw(); Sleep(2); } EndBatchDraw(); return 0; } 如果有哪里不懂,可以问我,当然如果有哪里有问题,也欢迎大佬提出哦  项目文档 技术实现 - 游戏开发工具 采用VS2022,Easyx图形库,C语言/C++ - 游戏代码结构和模块划分 1.初始化游戏窗口 2.初始化游戏数据 3.循环游戏事件 编写玩家控制模块,碰撞模块 总结和展望 - 游戏开发过程中的经验和教训 增加我对C语言的使用熟练度,更好的掌握条件控制与循环控制程序运行 接触到一部分C++知识如IMAGE变量,MySQL数据库,多线程使用(基础版),有利于我之后进一步接触 C++ 对bug的调试更加熟练,同时掌握开发游戏最基础的逻辑,锻炼自己的逻辑思维 增加团队合作,增长团队合作精神

    58301编辑于 2024-03-11
  • 来自专栏C语言与数据结构算法

    项目实战——C语言扫雷游戏

    这是一款9*9的扫雷游戏 1.需求分析 我们需要编写一款C语言扫雷游戏,包含9*9 自定义格式等游戏格式 注意:(由于创作者水平有限)**!!**本款游戏未能实现UI设计前端知识。 游戏可以反复玩 甚至我们可以拓展多种玩法,例如:11x11、15x15、计时模式 游戏界面 2.程序框架设计 扫雷的过程中,布置的雷和排查出的雷的信息都需要存储,所以我们需要⼀定的数据结构(C语言讲完之后会讲到 再定义一个符号数组用来存放排查出的雷的信息 我们可以将数组初始化为* 3.分函数实现 打印游戏菜单界面 void menu() { printf("******************** / 打印行号(1到row) // 打印该行每个格子的内容 for (int j = 1; j <= col; j++) { printf("%c \n"); DisplayBoard(mine, row, col); // 显示地雷位置 } } (3)game.h #pragma once // 防止头文件被重复包含

    26810编辑于 2025-11-13
  • 来自专栏学习

    C语言项目---贪吃蛇

    一 、知识铺垫 贪吃蛇涉及的知识:C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、win32API等 1.win32API介绍 Windows除了协调应用程序、分配内存、管理资源之外,同时也是一个很大的服务中心 C语言的system函数可以达到执行系统操作。 接下来介绍宽字符概念 宽字符 普通字符占一个字节,但是宽字符占两个字节,再简单一点讲一下,C语言的国际化特性相关的知识,过去C语言并不适合非英语国家使用,C语言最初假定字符都是单字节的,但是这些假定并不是再世界上任何地方都适用 后来为了使C语言适应国际化,C语言的标准中不断加入了国际化的支持。 <locale.h>提供的函数用于控制c标准库中对于不同的地区会产生不一样行为的部分。 下面代码演示的是 C语言默认的本地信息是什么?

    44710编辑于 2024-10-09
  • C语言入门】C语言的相关基本概念3

    一、C语言的数据类型 1.数据类型的介绍 人与类聚,物与群分。C语言中,提供了丰富的数据类型来描述生活中的各种类型,所谓的类型,就是将具有相同特征的数据归类在一起。 bool 2.signed与unsigned关键字 在刚才介绍的数据类型中,我们可以看到有 signed 和 unsigned 这样的字眼,那么我们现在就来介绍一下这两个关键字 C语言用signed 的字符型变量 如果在变量名的后面赋值,那这个操作就叫做变量的初始化: int age = 10; double num_input = 23; char ch = 'X'; 2.变量的分类 对于变量,C语言中也有分类 = 0; c = b = a + 3;//连续赋值,从右向左依次赋值。 即b=a+3=9,c=b=9;,所以c最后的值为9 3.单目操作符 单目操作符,就是只对一个数据进行操作的操作符,有:++、--、+(正)、-(负) ++、--: “++”作用是让数据自增1;分为前置+

    16910编辑于 2026-01-09
  • 来自专栏C语言入门到精通

    C语言实现扫雷小游戏,自学C语言项目

    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 4 5 6 7 8 --+------------------  0|* * * * * * * * *  1|* * * * * * * * *  2|* * * * * * * * *  3|* * ----------------- ------1.开始游戏------ ------0.退出游戏------ ---------------------- 请输入你的选择: 更多案例可以go公众号:C语言入门到精通

    2.8K2319发布于 2020-12-15
  • 来自专栏全栈程序员必看

    S3C2440C语言点灯

    第一代程序员使用机器码 第二代程序员使用汇编 第三代程序员使用C语言 C语言相较于汇编和机器码是一个更高级的语言,我们使用的技术也应该与时俱进 之前控制寄存器是配置GPFCON和GPFDAT寄存器 ,通过地址访问,所以可以用C语言来进行对地址的访问。 GPFCON——0x5600,0050 GPFDAT——0x5600,0054 目录 S3C2440芯片手册导读 用指针表示 代码的编写 调错 S3C2440芯片手册导读 对于GPFCON,只用到了16 表示如下: *pGPFCON = 0x100; //0x400 //配置成输出引脚 *pGPFDAT = 0; //低电平点灯 会导致 在这两个地址中把这两个数据写进去 代码的编写 在编写C语言的代码前 start.S -o start.o arm-linux-gcc -c led.c -o led.o arm-linux-ld -Ttext 0 led.o start.o -o led.elf#链接

    88111编辑于 2022-07-01
  • 来自专栏小北的博文

    C语言笔记---(3)变量篇

    1.变量名(标识符) 变量名:变量名在 C 语言里面属于标识符(identifier),命名有严格的规范。 只能由字母(包括大写和小写)、数字和下划线(_)组成。 不能以数字开头。 2.声明变量 C语言的变量,必须先声明后使用。如果一个变量没有声明,就直接使用,会报错。 每个变量都有自己的类型(type)。声明变量时,必须把变量的类型告诉编译器。 3.变量赋值 C语言会在变量声明时,就为它分配内存空间,但是不会清除内存里面原来的值。这导致声明变量以后,变量会是一个随机的值。所以,变量一定要赋值以后才能使用。 赋值操作通过赋值运算符=完成。 虽然 C语言会自动转换类型,但是应该避免赋值运算符两侧的类型不一致。 C语言的变量作用域主要有两种:文件作用域(file scope)和块作用域(block scope)。

    1.1K20编辑于 2022-03-28
  • C语言的灵魂——指针(3)

    这就是数组名的含义我=我们不妨写一个代码来验证一下: #include<stdio.h> int main() { int arr[10]={1,2,3,4,5,6,7,8,9,10}; printf 指针数组——是数组,是用来存放指针的数组;int*arr[5] (存放整型指针的数组) #include<stdio.h> int main() { int a=10; int b=20; int c= 30; int d=40; int e=50; //与其一个个用指针变量来存放abcde的地址还不如直接用一个指针数组来存放 int *arr[5]={&a,&b,&c,&d,&e}; return }; int arr2[] = {2,3,4,5,6}; int arr3[] = {3,4,5,6,7}; //数组名是数组⾸元素的地址,类型是int*的,就可以存放在parr数组中 int* parr[3] = {arr1, arr2, arr3}; int i = 0; int j = 0; for(i=0; i<3; i++) { for(j=0; j<5

    14300编辑于 2025-12-23
领券