C知识点
文章平均质量分 69
枯荣有常
取法乎上,仅得其中;取法乎中,仅得其下!
展开
-
C++中指针和引用的区别
1、 从概念上讲:指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。2、参数传递:在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的:...转载 2021-08-20 09:38:32 · 1038 阅读 · 0 评论 -
C、C++编程及数据结构,适合新手及进阶可参考的博客
一、C语言博客:giturtle :https://blog.csdn.net/qq_423518801、C语言入门:https://blog.csdn.net/qq_42351880/category_9283584.html2、C语言:https://blog.csdn.net/qq_42351880/category_8572643.html?spm=1001.2014.3001.54823、指针知识:https://blog.csdn.net/lemon_jay/cate原创 2021-08-03 22:40:51 · 1042 阅读 · 0 评论 -
Visual Studio 编写程序时,常见错误及解决办法!
1、Debug Assertion Failed两种情况:野指针/指针悬挂; 内存泄漏;示例:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main(void){ char *name; //char *name = NULL; //char array[100] = {0}; //name = array; printf("What's your name:"); scanf("%s原创 2020-10-15 10:46:59 · 6690 阅读 · 0 评论 -
C语言知识点汇总之二(全)
21、函数初体验C语言要求函数必须“先定义,再调用”,定义函数的格式如下/函数的定义:类型名 函数名(参数列表){ 函数体}类型名就是函数的返回值,如果这个函数不准备返回任何数据,那么需要写上 void(void 就是无类型,表示没有返回值)。 函数名就是函数的名字,一般我们根据函数实现的功能来命名,比如 print_C 就是“打印C”的意思,一目了然。 参数列表指定了参数的类型和名字,如果这个函数没有参数,那么这个位置直接写上小括号即可(())。 函数体就是指定函原创 2020-09-28 15:55:20 · 1114 阅读 · 1 评论 -
C语言知识点汇总之一(全)
1、scanf()scanf()函数解析:由scanf说起之1:scanf函数和回车、空格 及其返回值视频见:小甲鱼,VIP资料\【视频教程】C++快速入门\第二讲和第三讲要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置。当用户按下键盘上的“Enter”键时,数据输入结束。程序自动对所有的整数进行求和并打印出结果。示例代码:#define _CRT_SECURE_NO_WARNINGS#include <...原创 2020-09-17 15:33:15 · 5536 阅读 · 1 评论 -
C语言变量定义与赋值
编程环境:Visual Studio 2017;电脑系统:WIN10 ;一、定义变量与初始化一般编程中,考虑编程环境及C89、C99标准,稳妥的做法是:定义变量的同时进行初始化;1、目的是j的定义在i变量赋值的后面,是否能够运行:2、调用子函数add,是否完成加法运算?3、调用子函数add1,返回值赋给未初始化变量sum?代码如下:(1)head.h 头文件//#pragma once#include <stdio.h>add(int a, int b,原创 2020-06-17 11:22:40 · 9877 阅读 · 0 评论 -
关于“回车”的有趣历史 及 “回车”与“换行”的区别
在输入文本时,回车键一敲,就开始了新的一行,这个习惯性用法难免误导 C/C++ 的初学者们对 回车符(CR, Carriage Return)'\r' 和 换行符(LF, Linefeed)'\n' 的理解,这里这个问题我们暂且放下,后文再谈。先让我们来看看关于“回车”的有趣历史来源。 关于“回车键”的来历,要追朔到机械英文打字机的时代。在这种打字机上有个叫“字车”的部件,大概...转载 2020-04-13 09:38:20 · 449 阅读 · 0 评论 -
C中fgets()
char *fgets(char *str, int n, FILE *stream)从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。返回值:如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指...原创 2020-03-16 21:44:21 · 1046 阅读 · 1 评论 -
C中 main(int argc,char **argv)
int main(int argc, char** argv)int main(int argc, char* argv[])void main(int argc, char** argv)void main(int argc, char* argv[]),上述四种表述一致!argc是argument count的简称,argv是argument variable的简称;也就是...原创 2020-03-06 14:35:05 · 188 阅读 · 0 评论 -
C中 stdarg.h
#include<stdarg.h>stdarg.h是C语言中C标准函数库的头文件,stdarg是由standard(标准) arguments(参数)简化而来,主要目的为让函数能够接收可变参数。C++的cstdarg头文件中也提供这样的功能;虽然与C的头文件是兼容的,但是也有冲突存在。VA_LIST 是在C语言中解决变参问题的一组宏,所在头文件:#include <s...原创 2020-03-06 11:14:02 · 550 阅读 · 0 评论 -
-128的补码及原码、反码、补码
一、原码一个字节占8位;一个字长为n的机器数能表示不同的数字的个数是固定的2^n个,n=8时2^n=256;用来表示有符号数,数的范围就是 -2^(n-1) ~ 2^(n-1)-1,n=8时,这个范围就是 -128 ~ +127。用来表示无符号数,就不需要用一位来表示符号位,n位机器数全部用来表示是数值,这时表示数的范围就是0~2^n-1,n=8时这个范围就是0~255 。...原创 2020-01-16 17:39:01 · 13815 阅读 · 3 评论 -
让你不再害怕指针!附一个有趣的例子……
如下例1: int *ptr;char *ptr;int **ptr;int (*ptr)[3];int *(*ptr)[4];一、指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。 这是指针本身所具有的类型。 让我们看看如下各个指针的类型:int *ptr; //指针的类型是 int*char *ptr...原创 2020-01-16 14:15:53 · 195 阅读 · 0 评论 -
上下左右键的ASCII
case 72: //上 break;case 80: //下 break;case 75: //左 break;case 77: //右 break;case 32: //空格是暂停 getch(); break;操作游戏:W、A、S、D;w、a、s、d;支持大小写及上下左右键switch (getch()) { case'A': cas...原创 2020-01-14 11:07:18 · 8037 阅读 · 0 评论 -
C中#error和#line预处理
#error用于自定义一条编译错误#warning用于自定义一条编译警告信息#error和#warning常用于条件编译的情形#line用于强制指定新的行号和编译文件名一、#error预处理#error预处理指令的作用是:编译程序时,只要遇到#error就会生成一个编译错误提示信息,并停止编译。其语法格式为:#error error-message注意,宏串e...原创 2020-01-09 14:25:51 · 328 阅读 · 0 评论 -
递归详解
递归=‘递’ + ‘归’ ;有去有回!递归的基本思想是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。参考链接:递归函数详解——VS调试教你理解透彻递归其参考代码:#include <st...原创 2020-01-07 20:13:04 · 404 阅读 · 0 评论 -
第六章 函数
一、函数的由来和好处1、降低复杂性;2、避免重复代码段;3、限制改动带来的影响;4、隐含顺序:5、改进性能;6、进行集中控制;7、隐含数据结构;8、隐含指针操作;9、隐含全局变量:参数传递;二、编码风格:规则1:每一个函数都必须有注释,即使函数短到可能只有几行。头部说明需要包含的内容和次序如下:/********************...原创 2020-01-07 14:42:13 · 314 阅读 · 0 评论 -
C语言内存管理
一、栈、堆和静态区:1、堆:由maloc系列函数或new操作符分配的内存。其生命周期由free或delete决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。2、栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。3、静态区:保存自动全局变量和static变量(包括s...原创 2020-01-07 10:00:19 · 517 阅读 · 0 评论 -
C中一维数组与指针、指针数组、二级指针
一、示例程序:#include <stdio.h>#include <stdlib.h>#include <conio.h>int main() { int a[5] = {1,2,3,4,5}; int *p = a; int *p1 = a; return 0;}程序调试:二、示例代码:#in...原创 2020-01-05 13:39:13 · 329 阅读 · 0 评论 -
NULL以及‘\0‘、0、“0“、‘0‘区别
一、NULLC++和C中NULL的定义:#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif#endif示例代码:#include <stdio.h>int main(){ int *...原创 2020-01-04 13:34:11 · 1006 阅读 · 0 评论 -
链表相关知识点
一、结构体所占内存:示例程序:#include <stdio.h>#include <conio.h>#include <stdlib.h>//普通结构体typedef struct Stu { int a; float b;};//结点结构体typedef struct Node { int a; float b; Nod...原创 2020-01-04 12:57:13 · 165 阅读 · 0 评论 -
无法解析的外部符号的几种可能
无法解析的外部符号的几种可能无法解析的外部符号的几种可能(lib方面的)原创 2020-01-02 21:20:01 · 322 阅读 · 0 评论 -
C中函数优化替代方案
一、减少不必要的全局变量1、指针代替全局变量示例代码:#include <stdio.h>#include <conio.h>int score = 5;void addScore() { score = score + 1;}void minusScore() { score = score - 1;}void printScor...原创 2020-01-02 15:39:10 · 836 阅读 · 0 评论 -
#pragma用法大全和 _T()
1、#pragma参考链接:#pragma#pragma用法大全论#pragma comment和winmm.lib函数(为什么palysound出现错误原因)2、_T()1、_T宏可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式如果你定义了UNICODE,那么_T宏会把字符串前...原创 2020-01-01 21:40:37 · 646 阅读 · 0 评论 -
ASCII编码和Unicode编码
1、ASCII编码:1、ASCII2、2、Unicode编码1、 Unicode码2、彻底弄懂 Unicode 编码3、一粒卑微的尘埃4、原创 2020-01-01 11:39:36 · 340 阅读 · 0 评论 -
C中按任意键继续的方式和理解
正确实现“按任意键继续”功能在大家写程序的时候,经常会遇到“按任意键继续”这样的功能。网上能找到的方法主要有两种:1. 使用 _getch() 语句2. 使用 system("pause") 语句现在挨个说说。_getch()_getch() 功能是从控制台输入一个字符(控制台不显示该输入),是 conio.h 里面声明的一个函数。所以 _getch() 很好的实现...原创 2019-12-31 16:24:16 · 10997 阅读 · 1 评论 -
C中读取文件路径的方式
绝对路径:一、通过转义字符的方式:‘\\’比如文件路径为:读取:background.jpg的代码如下:#include <stdio.h>#include <graphics.h>#include <conio.h>IMAGE img_bk;int main() { initgraph(600,480); loadima...原创 2019-12-30 10:23:49 · 16961 阅读 · 1 评论 -
C++中的布尔类型bool
遵循非0值为真,0值为假学过C语言的程序员应该清楚,在C语言中,是没有bool这个基础类型的。在C语言中,当我们要表示真或假的时候,都是定义一个非bool类型来使用的。在C++中,加入了布尔bool这种基础的类型,用true和false来表示真或者假,也可以用非0值来表示真,用0来表示假。在C++中,虽然布尔类型只表示true和false,看起来好像可以用一个位来存储布尔类型的变量,但其实...原创 2019-12-27 15:16:21 · 1373 阅读 · 0 评论 -
C中 strcmp() 与 strcpy()
头文件: #include <string.h>一、strcmp() 函数函数原型:int strcmp(const char *str1, const char *str2)参数str1 -- 要进行比较的第一个字符串。 str2 -- 要进行比较的第二个字符串。返回值该函数返回值如下:如果返回值 < 0,则表示 str1 小于 str2...原创 2019-12-25 21:30:21 · 1426 阅读 · 0 评论 -
C中 return 和 exit 区别
return是语言级别的,它表示了调用堆栈的返回;exit是系统调用级别的,它表示了一个进程的结束。一、void exit(int state)头文件:<stdlib.h>函数用途:程序中止执行,返回调用过程输入参数:state 0-正常中止,非0-非正常中止 区别:1、exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ...原创 2019-12-25 17:16:10 · 292 阅读 · 0 评论 -
C中 常用的API函数
一、gotoxy():引用百度文库中对coord的解释说:COORD是Windows API中定义的一种结构,表示一个字符在控制台屏幕上的坐标。其定义为:typedef struct _COORD {SHORT X; // horizontal coordinateSHORT Y; // vertical coordinate} COORD;// 光标移动voi...原创 2019-12-25 11:36:41 · 1131 阅读 · 0 评论 -
C中指针数组和数组指针&指针函数和函数指针
优先级:()>[]>*[ ]和* 优先级:[]”的优先级比“*”要高p1 先与“[]”结合,构成一个数组的定义,数组名为p1,int *修饰的是数组的内容,即数组的每个元素。那现在我们清楚,这是一个数组,其包含10 个指向int 类型数据的指针,即指针数组。至于p2 就更好理解了,在这里“()”的优先级比“[]”高,“*”号和p2 构成一个指针的定义,指针变量名为p2,in...原创 2019-12-23 16:39:58 · 257 阅读 · 0 评论 -
C中动态内存管理 堆中分配内存
堆区头文件:#include<stdlib.h>一、void * malloc(size_t size)和 void free(void* ptr):1、void * malloc(size_t size)在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。1).malloc()函数会向堆中申请一片连续的可用...原创 2019-12-23 14:37:29 · 987 阅读 · 0 评论 -
C中system用法
格式system(“命令语句”); 需要在代码中加上#include<stdlib.h>才可使一、system(1)、system("pause") 在 #include <stdlib.h>头文件中!作用:暂停(2)、COLOR [attr]attr 指定控制台输出的颜色属性。颜色属性由两个十六进制数字指定 --第一个:对应于背景,第...原创 2019-12-23 10:28:21 · 25471 阅读 · 4 评论 -
C中的数据类型&基本命名法则
一、数据类型#include<windows.h>#include<stdio.h>int main(){ printf("\t\tVisual Studio 2017基本数据类型所占字节数:\n"); printf("int 所占字节数:%d\n", sizeof(int)); printf("unsigned int 所占字节数:%d\n", ...原创 2019-12-20 11:51:12 · 313 阅读 · 0 评论 -
C中哪些方式定义的字符串,其末尾会自动添加‘\0’
一、‘\0’ 的本质:'\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。'\0'就是 字符串结束标志。'\0'是转译字符,意思是告诉编译器,这不是字符0,而是空字符。空字符\0对应的二进制为00000000,而数字0为00110000原来,在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当...原创 2019-12-19 10:38:48 · 18181 阅读 · 5 评论 -
C中出现:错误 C1010 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”等头文件
解决方式:错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束。没有找到预编译指示信息的头文件"stdafx.h"。 (因为工程中的每个cpp文件属性默认都是...原创 2019-12-18 21:08:20 · 1142 阅读 · 0 评论 -
清理输入和输出缓冲区 stdin&stdout
一、VC中fflush(stdin),用于清空输入缓冲区,示例程序如下:#include <stdio.h>int main() { int i_var[10] = { 0 }; //请输入三个元素 int i = 0; for (; i < 3; i++) { scanf("%d", &i_var[i]); } //rewind(std...原创 2019-12-17 21:49:05 · 1073 阅读 · 0 评论 -
C中如何用种子生成随机数
所需要的头文件:#include <stdlib.h>#include <time.h>一、int rand(void) 函数C 库函数 int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。\示例代码: #i...原创 2019-12-17 21:13:08 · 5451 阅读 · 1 评论 -
C中字符串常量&字符数组&字符常量
在 C 语言中,字符串有两种存储方式,一种是通过字符数组存储,另一种是通过字符指针存储。一、字符常量:一个用单引号括起来的单个字符(或字符转义序列或三字母词)实质(含义):是一个整形值。属于四大基本数据类型(分别是整型,浮点型,指针,聚合类型)中的整型(integers)。C语言字符常量与字符串常量备注:字符常量和字符变量:字符常量字符常量是用单引号括起来的一个字符,...原创 2019-12-17 11:21:42 · 44345 阅读 · 8 评论 -
C中结构体变量、数组、指针、枚举等
一、定义结构体变量:知识点:1、只有结构体变量才分配地址,而结构体的定义是不分配空间的。**2、结构体中各成员的定义和之前的变量定义一样,但在定义时也不分配空间。3、结构体变量的声明需要在主函数之上或者主函数中声明,如果在主函数之下则会报错4、c语言中的结构体不能直接进行强制转换,只有结构体指针才能进行强制转换5、相同类型的成员是可以定义在同一类型下的struct S...原创 2019-12-16 21:18:13 · 604 阅读 · 0 评论