C/C++笔记
文章平均质量分 58
雨巷流刀
记录每一分痛点,分享每一点收获
展开
-
螺旋队列公式解释
以1为坐标零点,向右为X正,向下为Y正,任意输入一坐标(x,y),r=max(|x|,|y|) 为当前所在层数,得到下面公式上边:top=max−r+x;左边:left=max−3∗r−y;下边:bottom=max−5∗r−x;右边:right=max−7∗r+y;第R层数值是从多少开始的?首先可以知道第R-1层数值是 [2x(R-1)+1]^2 = (2xR-1)^2 加一就是下一层的第一个数值。eg:第四层是从 (2x4-1)^2+1=50 开始第R层有多少个数?第R层最大数为(.原创 2022-04-02 23:13:27 · 672 阅读 · 0 评论 -
输出数字横板“金字塔”
一个试题,本来挺简单的,由于时间久了没写连输入函数都不会用了,记录一下试题如下:// 写一个C语言程序,编译二进制文件为program,以下是运行和输出结果的例子,比如输入5:// $./program 5// 1// 1 2// 1 2 3// 1 2 3 4// 1 2 3 4 5// 1 2 3 4// 1 2 3// 1 2// 1#include <stdio.h>int main(){ int n = 0; printf("请输入一个数字:")原创 2022-04-01 18:57:19 · 767 阅读 · 0 评论 -
结构体嵌套枚举给结构体变量赋值注意
分两种情况来讨论1、枚举类型定义在结构体外//定义枚举类型enum Flash{ AlwaysOn, //0开始递增 AlwaysOff, AllFlashLight, AlternateFlash,};//定义结构体typedef struct{ int FlashTime; enum Flash status;}sLED;int main(){ sLED LED; LED.FlashTime = 300; LED.status = AlwaysOn; ret原创 2022-03-22 17:12:53 · 3549 阅读 · 2 评论 -
C语言练习题笔记
1、指针不能用浮点数之类常量赋值char *p = “abcdefg”; //对字符串常量:在定义时同时赋给指针一个字符串常量进行初始化,会分配指针空间float *pip = 3.14; / *错误无法通过编译,不能指望为浮点数之类的常量分配空间 * /2、数组的形式 i[a] 和 a[i] 的关系是一样的#include <stdio.h>int main(){ /* 我的第一个 C 程序 */ printf("Hello, World! \n"); int a原创 2021-05-25 20:44:46 · 627 阅读 · 0 评论 -
《C专家编程》 第九章 再论数组 知识点小结
1、什么时候数组与指针相同? 数组的声明就是数组,指针的声明就是指针,两者不能混淆。但在使用数组(在语句或表达式中引用)时,数组总是可以写成指针的形式,两者可以互换。根据C语言的标准说明:“作为函数定义的形式参数”(也就是只限于这种情况)时,“数组下标表达式总是可以改写为带偏移量的指针表达式。”事实上,一个数组作为参数传递给一个函数(表达式)时,它最终是会被转化为一个指向该数组第一个元素的指针。当参数传递是一个指针时,毋庸置疑,最终还是一个指针。=======================原创 2021-05-06 19:47:24 · 128 阅读 · 0 评论 -
《C专家编程》第四章 数组与指针并不相同 知识点小结
1、对数组的引用总是可以写成对指针的引用2、C语言的对象必须有且只有一个定义,但它可以有多个extern声明。(此处对象指 函数和变量 这些与链接器有关的东西)3、声明相当于普通的声明:它所说的并非自身,而是描述其他地方的创建的对象。(可以多次出现) 定义相当于特殊的声明:它为对象分配内存。(只能出现在一个地方)4、extern 对象声明告诉编译器对象的类型和名字,对象的内存分配则在别处进行。由于并未在声明中为数组分配内存,所以并不需要提供关于数组长度的信息。对于多维数组,需要提供除最左边一维之外原创 2021-05-04 17:01:33 · 106 阅读 · 0 评论 -
C++抛出异常测试
关键字 :try、throw、catchtry: try 块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。测试内容:异常处理执行过程#include <iostream&...原创 2019-10-12 17:29:50 · 520 阅读 · 0 评论 -
C语言运算符优先级容易让人误解问题
优先级问题表达式人们可能误以为的结果实际结果.的优先级高于*。 ->操作符用于消除这个问题*p.fp所指对象的字段f (*p).f对 p 取 f 偏移,作为指针,然后进行解除引用操作。*(p.f)[]高于*int *ap[]ap是个指向int数组的指针 int(*ap)[]ap是个元素为 int 指针的数组 int *(ap[])函数 () 高于*int *fp()fp是个函数指针,所指函数返回int。int(*f...原创 2021-04-30 20:26:40 · 142 阅读 · 3 评论 -
认清sizeof()——远离Bug
先看代码#include <stdio.h>int array[] = {12,23,34,45,56,67,78};#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))int main(){ int d = -1; if(d <= TOTAL_ELEMENTS) { printf("输出1"); } else { printf("输出2"); } return 0;}看原创 2021-04-29 20:59:11 · 161 阅读 · 0 评论 -
指针的参数传递
一、先看这段代码,编译的话会报错foo(const char **p){}main(int argc,char **argv){ foo(arvg);}错误原因简单来说就是参数类型不匹配。那么为什么 char * *argv 类型的参数不能 传递给 const char **p?这是本文要解释的问题。而事实上,char *cp;const char *ccp;ccp = cp; 这样却是符合要求的。(即char * 可以传递给 const char *)Why?二、先原创 2021-04-27 22:56:22 · 483 阅读 · 2 评论 -
C语言中 || \ 符号的意思
||是逻辑符号或。\是连接符,不是换行,define需要定义都在同一行,而同一行写不下就可以用""表示连接在同一行里。示例:#define IS_USART_ALL_PERIPH(PERIPH) (((PERIPH) == USART1) || \ ((PERIPH) == USART2) || \ ((PERIPH) == USART3) || \原创 2021-04-25 20:36:44 · 8635 阅读 · 0 评论 -
c文件调用汇编中函数与汇编函数使用c中全局变量
环境:keil5一、外部文件使用汇编中函数:使用 EXPORT 关键字导出该汇编文件里面的函数,让外部文件可见。除了使用 EXPORT 导出外,还要在某个 C的头文件里面声明下这个函数,这样才可以在 C文件里面调用这个函数。比如:;在汇编文件中导出汇编函数 OSStartHighRdy、PendSV_HandlerEXPORT OSStartHighRdy ; 该文件定义的函数EXPORT PendSV_Handler原创 2021-04-24 20:34:46 · 1186 阅读 · 0 评论 -
枚举类型名的重定义用法
先看这样一段代码,你认为是对的还是错的呢?enum boolean{true,false};boolean bl=false;乍一看还真以为是对的,其实,这样写是错的,boolean 未定义。报错如下:应该这样定义 enum boolean b1=false;,但是如果非要用 boolean 来定义变量的话,就需要对其重定义了如:typedef enum boolean boolean;,也就是说我们想直接用枚举名来定义变量需要两步①:定义枚举类型enum boolean{true,f原创 2021-04-24 11:21:37 · 2660 阅读 · 0 评论 -
指针的加减法运算规则
指针与整数相加: 可以使用 + 运算符把指针与整数相加,或整数与指针相加。无论哪种情况,整数都会和指针所指向类型的大小(以字节为单位)相乘,然后把结果与初始地址相加。如果相加的结果超出了初始指针指向的数组范围,计算结果则是未定义的。除非正好超过数组末尾第一个位置,C保证该指针有效。指针减去一个整数: 可以使用 - 运算符从一个指针中减去一个整数。指针必须是第一个运算对象。整数是第2个运算对象。该整数将乘以指针指向类型的大小(以字节为单位),然后相减的结果超出了初始指针所指向数组的范围,计算结果则是未定原创 2021-04-04 12:44:59 · 15969 阅读 · 12 评论 -
badApple讲解说明
代码出处:https://github.com/kisekied/BadAppleStringAnimation#include <stdio.h>//#include <stdlib.h>//#include <string.h>#include <Windows.h>//#include <conio.h>#pragma warning(disable : 4996) //消除警告int main(int argc, char原创 2021-02-14 17:17:15 · 1096 阅读 · 1 评论 -
c语言 sscanf,scanf,fscanf正则表达式用法
每种语言都对正则表达式有着不同程度的支持,在C语言中,有输入功能的这三个函数对正则表达式的支持并不强大,但是我们还是有必要了解一下每种语言都对正则表达式有着不同程度的支持,在C语言中,有输入功能的这三个函数对正则表达式的支持并不强大,但是我们还是有必要了解一下。首先来看看他们的原型:#include <stdio.h>int scanf(const char *format, ...);int fscanf(FILE *stream, const char *format, ....转载 2021-02-04 10:38:18 · 1252 阅读 · 0 评论 -
第二次认识指针
在之前我所了解的指针只是 ”指针存放某个变量的地址,可以通过指向该变量的指针去修改他的值“,而对更稍微深一点的东西却并未了解。现在做如下记录:**(1)**char a 是占一个字节,char *p 、 int *p 或 char **p 在32位的机器中都是占4个字节。(或者说:指针,在32位机器中占4个字节,而在64位机器中占8个字节)**(2)**指针存储举例演示: int x...原创 2020-02-11 11:56:06 · 130 阅读 · 0 评论 -
学生信息管理系统(C语言编写)
项目要求:实现简单的学生成绩信息管理,系统要求以菜单方式工作,因而根据题目要求,提供键盘式选择菜单实现功能选择,学生成绩管理信息包括:学期、学号、班别、姓名、四门课程成绩(数学、语文、英语和计算机)等。学生成绩信息管理采用文件保存,所以应提供文件的输入(能按学期、班级完成对学生成绩的录入)、输出(能按班级输出学生的成绩单)等操作;要实现学生成绩信息的查询(能查询学生成绩和不及格科目及学生名单);要...原创 2020-01-09 21:05:47 · 2239 阅读 · 1 评论 -
判断按键输入代码及 vk 键值对应表
仅做个笔记,以防丢失#define KEY_DOWN(vk_code) GetAsyncKeyState(vk_code) & 0x8000 ? 1 : 0 //用于判断按键输入用法简示:if (KEY_DOWN(VK_UP)) { KeyState = K_Up; }原创 2019-12-30 12:01:22 · 9140 阅读 · 0 评论