C语言常见问题
文章平均质量分 93
汇总了一些初学者在学习C语言时经常遇到的问题,包括头文件、main函数、输入输出缓冲区、字符串、数组、指针、链表、文件等知识点,并对其中的部分内容做了一些拓展。
易水卷长空
历历浮生,无非败而后成
展开
-
C语言 | 常见问题汇总
面向刚开始学习C语言的同学,汇总了头文件、主函数、IO缓冲区、变量与类型转换、字符串、数组、指针、链表、文件操作等方面初学者经常遇到的问题,分析问题的原因,并给出一些解决的方法及这些方法的优缺点对比原创 2021-11-12 19:43:27 · 5343 阅读 · 0 评论 -
C语言 | windows.h实现彩色圣诞树
如何用C程序输出不同颜色的字体?一般来说,只靠应用程序本身很难达到这个目的。为了解决这类问题,微软提供了丰富的Windows API。通过调用各种Windows API函数,应用程序可以管理它的用户界面、显示各种图形和文字、播放音乐等等。原创 2021-12-21 00:17:23 · 8971 阅读 · 2 评论 -
C语言常见问题(一)——头文件<>与””的区别
目录一、#include<>与””的区别二、举例三、初学者常用的标准库头文件一、#include<>与””的区别C语言包含头文件有两种写法#include<stdio.h>和#include"stdio"(#include后面可以不空格),两种写法的区别如下:#include <头文件>: 编译器只会从系统配置的库环境中去寻找头文件,不会搜索当前文件夹。通常用于引用标准库头文件。 #include "头文件...原创 2021-10-22 22:39:00 · 7076 阅读 · 0 评论 -
C语言常见问题(二)——主函数main与return 0
目录一、int main与void main二、关于return 0三、带参数的main函数一、int main与void main1.main函数标准写法C99标准规定C语言main函数返回类型一定为int,并且只有两种写法: 1)标准写法一(无参数)int main(void){ /* ... */ }在C++中,int main()和int main(void)没有任何区别。但是在C语言中,...原创 2021-10-24 19:55:34 · 7561 阅读 · 0 评论 -
C语言常见问题(三)——输入字符问题,scanf、getchar与缓冲区
C语言是如何读入数据的?如何理解输入缓冲区的概念?为什么一些程序会使用getchar吃掉前面的回车?scanf、getchar为什么不能正确地读取字符/字符串?原创 2021-10-22 14:40:27 · 1259 阅读 · 0 评论 -
C语言常见问题(四)——变量、数值溢出与类型转换
一、变量1.概念在程序执行期间值可变的数据对象称为变量。变量的值之所以可变,是因为编译器在编译时给每个变量分配了一定大小的存储空间,这个存储空间用来保存变量的值(如图)。 2.C语言常见变量类型C语言每个变量都有特定的类型,类型决定了变量存储空间的大小和布局。 值得注意的是,对于浮点数而言,取值范围不代表精度。float的有效数字最多为7位,精度为6~7位有效...原创 2021-11-06 14:06:58 · 5141 阅读 · 0 评论 -
C语言常见问题(五)——字符串
目录一、常见bug:“烫烫烫烫烫烫”1.解决办法2.原理二、字符串定义1.字符串存储2.字符串常量3.字符串变量三、如何操作字符串1.字符串变量赋值2.输入3.输出4.计算字符串长度5.字符串在函数间的传递6.自定义操作四、string头文件常用函数1.计算字符串长度strlen2.复制字符串strcpy3.复制前n个字符strncpy4.字符串比较strcmp5.比较前n个字符strncpy6.字符串拼接strcat.原创 2021-11-11 18:55:28 · 3433 阅读 · 0 评论 -
C语言常见问题(六)——指针与数组
本文旨在分析指针与数组的区别和联系,同时包含以下内容:指针与地址、指针/地址与整数的运算、多级指针;指针与数组的关系、数组名、指针数组与数组指针;以及野指针的危害等原创 2021-11-22 11:55:21 · 1633 阅读 · 0 评论 -
C语言常见问题(七)——动态内存分配之单向链表
目录一、链表1.什么是链表2.头指针head3.链表的节点二、链表的操作1.知识准备2.插入节点3.链表的遍历4.检索链表的某个节点5.删除节点6.交换链表的两个节点三、易错点总结1.头指针head2.遍历整个链表与检索尾结点的区别3.哨兵节点一、链表1.什么是链表链表是一种动态数据结构(如图是一个单向链表)。为什么说链表是动态的?是因为链表的节点存储于堆区中,并且在程序运行期间我们可以任意修改链表的长度。2...原创 2021-11-19 01:05:43 · 3856 阅读 · 1 评论 -
C语言常见问题(八)——文件
在实际应用中,有时会遇到这样一些问题,比如需要我们重复读入大量的数据,如果每次运行程序都要从键盘输入,就显得太麻烦了;又比如在程序运行结束后,我们还想查看程序运行的结果,如果让我们再跑一次程序,稍显麻烦……为了解决这些问题,C引入了对文件的操作。文件是实现数据持久化的一种方式。目录一、概述1.文件指针2.文件路径3.字节流二、文件的读写1.文件的打开、关闭2.文件定位3.文件的读操作4.文件的写操作一、概述1.文件指针...原创 2021-11-20 17:44:01 · 1401 阅读 · 0 评论 -
C语言常见问题——++i与i++详解
目录一、++i与i++1.引例2.(i++)+(i++)+(i++)与(++i)+(++i)+(++i)3.总结二、函数中的++1.printf中的++2.++i/i++作为函数的参数3.总结一、++i与i++1.引例对于如下程序,其输出结果是什么#include <stdio.h>int main(){ int i=1,a=0,b=0; a=i++; b=++i; printf("i=%d,a=%d,b.原创 2021-11-17 14:55:34 · 28082 阅读 · 3 评论 -
C语言常见问题——数组初始化的四种方法
有一回,小易同学对我说:“你学过编程吗”,我略略点一点头。他说,“学过编程,我便考一考你,在使用数组之前,应不应该初始化数组?”我暗想,这么简单的问题,也配考我么?不只是数组,在使用任何变量之前,都应该对变量进行初始化,这是一个编程的好习惯,可以有效避免许多由于垃圾值导致的bug。于是我回过脸去,不再理会。小易同学等了许久也不见我回答,很诚恳的说道,“不知道罢?我教给你,记着!......数组的初始化有4种写法——”初始化列表、memset函数、指定初始化器、for循环原创 2021-12-07 16:51:47 · 116443 阅读 · 10 评论 -
超长整数计算——从斐波那契数列说起
我们知道一般编译器的int类型最大值约为21亿,至多能存储10位整数,大多数情况下足够我们使用了。但有时我们会遇到需要存储和运算更大整数的情况,例如斐波那契数列。我们通常把这类存储和运算超大整数问题称为大数运算或超长整数运算。目录一、从斐波那契数列说起二、无符号超长整数运算三、拓展一、从斐波那契数列说起1.引例题目: 开始,有一对小兔子。一个月后,小兔子变成大兔子,并且开始怀孕。两个月后,生出一对小兔子,这时共有两对兔子(一对大兔子,一对小兔子),...原创 2021-11-05 16:52:47 · 1855 阅读 · 0 评论 -
大数除法(超长整数运算除法器)详解
在大数运算中,比较难实现的应该是高精度/高精度的除法器。一、原理1.大数存储先说说大数在C语言程序中是怎么存储的。我们使用长度为N的int数组来存储无符号超长整数,其中数组每个元素存储的值上限为M。如下:#define M 10000 //M进制,int数组每个元素取值上限#define N 5 //数组长度int x[N]={0};因为int类型最多表示10位有效数字(最大值为2147483648),当两个有效位数为5的in...原创 2021-11-08 16:38:05 · 8665 阅读 · 1 评论