-
2021-05-20 13:24:18
c语言头文件下载 C语言头文件大全
导读:就爱阅读网友为您分享以下“C语言头文件大全”资讯,希望对您有所帮助,感谢您对92的支持!
标准C语言头文件
ISOC标准定义的头文件(24项)验证程序断言支持复数算术运算出错码
浮点环境
整型格式转换替代关系操作符宏局部类别数学常量信号可变参数表标准定义整型实用程序库函数字符串操作时间和日期
宽字符支持
POSIX标准定义的必须的头文件(26项)目录项
文件控制路径名模式匹配类型组文件口令文件正则表达式终端I/O符号常量
字扩展类型
Internet定义
Internet地址族传输控制协议select函数套接字接口进程时间基本系统数据类型系统名
进程控制
POSIX标准定义的XSI扩展头文件(26项)cpio归档值动态链接
文件树漫游
代码集转换实用程序模式匹配函数定义货币类型消息类别轮询函数
字符串操作系统出错日志记录用户限制用户帐户数据库消息队列资源操作共享存储文件系统信息附加的时间
矢量I/O操作
POSIX标准定义的可选头文件(8项)异步I/O消息队列执行调度
信号量
XSISTREAMS接口时间跟踪
字符类型浮点常量实现常量非局部goto布尔类型和值标准I/O库通用类型数学宏宽字符分类和映射支持
文件名匹配类型网络数据库操作tar归档值文件时间套接字本地接口内存管理声明文件状态UNIX域套接字定义
消息显示结构语言信息常量数据库操作搜索表用户上下文IPC信号量时间类型
线程
更多相关内容 -
extern是什么意思?C语言中extern用法全解
2021-05-19 18:21:55答案与分析: 目前业界针对这种情况的处理没有一个很完美的方案,通常的做法是提供方在自己的xxx_pub.h中提供对外部接口的声明,然后调用方include该头文件,从而省去extern这一步。以避免这种错误。 宝剑有双锋,...1 基本解释
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
另外,extern也可用来进行链接指定。
2 问题:extern 变量
在一个源文件里定义了一个数组:
char a;
在另外一个文件里用下列语句进行了声明:
extern char *a;
请问,这样可以吗?
答案与分析:
1)、不可以,程序运行时会告诉你非法访问。原因在于,指向类型T的指针并不等价于类型T的数组。extern char
*a声明的是一个指针变量而不是字符数组,因此与实际的定义不同,从而造成运行时非法访问。应该将声明改为extern char a。
2)、例子分析如下,如果a = "abcd",则外部变量a=0x61626364 (abcd的ASCII码值),*a显然没有意义。
显然a指向的空间(0x61626364)没有意义,易出现非法内存访问。
3)、这提示我们,在使用extern时候要严格对应声明时的格式,在实际编程中,这样的错误屡见不鲜。
4)、extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。
3 问题:extern 函数1
常常见extern放在函数的前面成为函数声明的一部分,那么,C语言的关键字extern在函数的声明中起什么作用?
答案与分析:
如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别:
extern int f(); 和int f();
当然,这样的用处还是有的,就是在程序中取代include
“*.h”来声明函数,在一些复杂的项目中,我比较习惯在所有的函数声明前添加extern修饰。
4 问题:extern 函数2
当函数提供方单方面修改函数原型时,如果使用方不知情继续沿用原来的extern声明,这样编译时编译器不会报错。但是在运行过程中,因为少了或者多了输入参数,往往会照成系统错误,这种情况应该如何解决?
答案与分析:
目前业界针对这种情况的处理没有一个很完美的方案,通常的做法是提供方在自己的xxx_pub.h中提供对外部接口的声明,然后调用方include该头文件,从而省去extern这一步。以避免这种错误。
宝剑有双锋,对extern的应用,不同的场合应该选择不同的做法。
5 问题:extern “C”
在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢?
答案与分析:
C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern
“C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。
下面是一个标准的写法:
//在.h文件的头上
#ifdef __cplusplus
#if __cplusplu*
**tern "C"{
#endif
#endif
…
…
//.h文件结束的地方
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
内容由用户发布,不代表本站观点。如发现有害或侵权内容。请点击这里
-
C语言字符串知识点全解
2020-04-17 14:10:16输入与输出(头文件stdio.h) 字符串的输入 字符串的输出 常用函数(头文件string.h) strlen strcat(strncat) strcmp(strncmp) strcpy(strncpy) 作用 计算字符串(不算结尾空字符)长度 将字符串2拼接到字符串...基础知识
字符串常量
定义
字符串常量是指用双引号括起来的内容(不包含双引号本身)。
双引号是用来告知编译器它括起来的是字符串。——《C Primer Plus》
性质
- 字符串常量是储存在静态空间里的静态数组,拥有静态变量所拥有的性质:只被储存一次、存在于整个生命周期。
在定义相同内容的字符串常量时,可能只为其分配一次存储空间,也可能分配多次 - 字符串常量(包括双引号及其括起来的内容)代表该字符串存储空间的首地址——类似数组名。
- 定义时在内存中储存的内容是双引号括起来的内容+结尾的空字符。
字符串数组
- 指针存储
int main() { char string1[3] = "Hi"; char string2[6] = "Hello"; char string3[7] = "hahaha"; char* StringPtr[3]; //建立一个含三个类型为指向字符的指针的元素的数组 StringPtr[0] = string1; StringPtr[1] = string2; StringPtr[2] = string3; /*再依次让三个指针指向不同的字符串首元素的地址(即字符串的首地址)*/ }
- 数组存储
int main() { char stringss[3][7] = {"Hi","Hello","hahaha"};//建立一个二维数组 }
- 两者的差别
- 二维数组的储存方式更直观,但占用了更多不必要的空间(当字符串长度差别很大时,这种劣势会更明显),指针的储存方式则相反。
- 在做排序时,直接排序指针比对数组的直接排序(利用strcpy函数)内容简单,而且保留了数组中字符串的原始顺序。见代码:
#include <string.h> int main() { char stringss[3][7] = {"Hi","Hello","hahaha"}; for( int i = 0; i < 3; i++ ) { StringPtr[i] = stringss[i]; } /*按字典顺序排序指针*/ for( int i = 0; i < 3; i++ ) { for( int k = i+1; k < 3; i++ ) { if( strcmp( StringPtr[i], StringPtr[k]) > 0 ) { char* TempPtr = StringPtr[i]; StringPtr[i] = StringPtr[k]; StringPtr[k] = TempPtr; } } } /*此时stringss中的元素均没有发生改变*/ /*直接按字典顺序排序数组内容*/ for( int i = 0; i < 3; i++ ) { for( int k = i+1; k < 3; k++ ) { if( strcmp( stringss[i], stringss[k]) > 0 ) { char TempPtr[7]; strcpy(TempPtr,stringss[i]); strcpy(stringss[i] ,stringss[k]); strcpy(stringss[k] ,TempPtr); } } } /*此时stringss中原来的顺序无法找到*/ }
空字符vs空指针
- 相同点:空字符和空指针都可用数值0来表示
- 不同点:空字符代表的0是指ASCII码表上0对应的空字符’\0’,空指针(NULL)代表的0是指的是一个地址,该地址不会与任何数据的有效地址对应。
定义和初始化
用数组储存字符串(3种方式)
第一种:
char str[] = "Hello"; //用字符串常量初始化
第二种:
char str[6] = {'H''i''\0'};//省略括号中的无语法问题,但数组大小只有3 char str[] = {'H''i''\0'};
第三种:
#include <stdio.h> char str[10]; scanf("%s", str);
- 在初始化数组时,若指定了数组大小,所有未被使用的元素都被自动初始化为’\0’。
因此如上方法2的第一种,初始化的结果是’H’ ‘i’ ‘\0’ ‘\0’ ‘\0’ ‘\0’ - 字符串常量之间没有空格或用空白字符分隔,等价于其串连起来的字符串。
char str[] = "Hello " "wor""ld"; char str1[] = "Hello world";
这里str和str1的内容是一样的。
用指针访问字符串
char *str = "Hello"; //名为str的指针指向字符串常量所在的首地址
不同指针指向相同内容的字符串常量,编译器可能只给该字符串常量分配1次,(也可能分配多次)储存空间。
二者的对比
- 数组有顶层const,因此数组不是可被赋值的左值。数组名代表的地址不可改变。而指针指向的地址可以改变(但其指向的字符串地址无法改变)。
- 定义时,字符串被储存在静态存储区中。
用数组存储字符串时,是将静态存储区中的字符串拷贝到数组中;
而指针未为字符串的存储分配具体空间,用指针定义字符串时,实则是让指针访问该静态变量所储存的地址。这也就导致此时不能用scanf对字符串进行输入,用指针修改字符串中元素的值时,可能导致其它指向相同内容字符串的指针指向的值发生改变(而相同内容的数组之间是独立的)。
建议在把指针初始化为字符串字面量时使用const限定符。
如果不修改静态存储的字符串本身,不要使用指针指向字符串字面量。
——《C Primer Plus》字符串函数
输入与输出(头文件stdio.h)
字符串的输入
调用格式 读取时的停止标识符 读取方式 是否导致越界 优势 特点 gets gets(StringName); 换行符 整行读入,丢弃末尾换行符 可能 优势,可能c99建议不用,c11废除此函数 方便,但容易产生不可预判的结果 fgets fgets(StringName, StringLength, stdin); return键 整行读入(会保留末尾的换行符)或读入了StringLength-1个字符 否 避免越界,还可以读取文件中的字符 所有输入的文字留在缓冲区,若不清理则可能被下一个字符数组读取 gets_s gets_s(StringName, StringLength); 换行符 整行读入(丢弃末尾的换行符)或读入了StringLength-1个字符 否 避免越界 越界时会丢弃该输入行的其他内容,程序将中止或退出,若想程序继续运行,需要另外写“处理函数” sprintf 与printf基本相同,除左括号后的第一个量是被填入的字符串名 后引号 可能 将本应打印于电脑屏幕的字体储存在字符串中,变量的内容应预先输入好 scanf scanf("%s", StringName); 空白字符:空格、tab、enter 按单词读入,丢弃末尾空白符 可能 能读取不同种类的数据 详情见数据类型、转换符及标准化输入输出 字符串的输出
调用格式 是否额外添加换行符 备注 puts puts(StringName); 是 一直打印直至遇到’\0’,已经被废弃 fputs fputs(StringName, FileName); 否 将字符串的内容写入文件,若要打印在屏幕上,FileName位置写stdout printf printf("%s", StringName); 否 可以输出不同类型的变量,详情见数据类型、转换符及标准化输入输出 常用函数(头文件string.h)
strlen strcat(strncat) strcmp(strncmp) strcpy(strncpy) 作用 计算字符串(不算结尾空字符)长度 将字符串2拼接到字符串1后面 比较两字符串的的机器排序序列(一般是ASCII码表),str2位于str1前返回正数,位于其后返回负数,二者相等返回0 用第二个字符串的内容等位地覆盖第一个字符串 调用格式 strlen(StringName); strcat(str1,str2); strcmp(str1,str2); strcpy(str1,str2); 特点/局限性 暂无 不能检查组合后的字符串是否越界 比较的是字符串而非字符 str1未必指向字符串的开始。若字符串2过短,会保留字符串1的部分内容。 是否改变字符串 否 str1改变,str2不变 否 str1改变,str2不变 改变结果 str1变为原str1除去空字符后接上整个str2 从str1指向的地址开始,被str2的内容覆盖 加n与原函数的区别 可控制连接后字符串(不包括空字符)的总长度不超过n 只比较前n个字母的机器排序序列 只覆盖从str1到str1+n指向的地址中间的区域 带n函数的调用格式 strncat(str1,str2,n); strncmp(str1,str2,n); strncpy(str1,str2,n); 函数原型
size_t strlen(const char*); char* strcmp(const char*, const char*); char* strncmp(const char*, const char*, size_t); char* strcat(char*, const char*); char* strcpy(char*, const char*); char* strncat(char*, const char*, size_t); char* strncpy(char*, const char*, size_t);
较常用函数
/*调用函数strrchr和strchr时,第二个实参可以是字符。*/ /*虽然函数原型中第二个参数的类型是int,但字符在计算机中的储存形式是其ASCII码,因此可直接用int类型进行读取。*/ char* strrchr(const char* s, int c); //查找字符串s中是否有字符c,若有则返回该字符最后一次出现的地址,若无则返回空指针 char* strchr(const char* s, int c); //查找字符串s中是否有字符c,若有则返回该字符首次出现的地址,若无则返回空指针 char* strstr(const char* s1, const char* s2);//查找字符串s1中是否有字符串s2,若有则返回该字符串首次出现的首地址,若无则返回空指针 char* strpbrk(const char* s1, const char* s2);//查找字符串s1中是否有字符串s2中的部分内容,若有则返回该部分字符串在s1中首次出现的首地址,若无则返回空指针
与字符相关的函数(头文件ctype.h)
- 字符串常量是储存在静态空间里的静态数组,拥有静态变量所拥有的性质:只被储存一次、存在于整个生命周期。
-
c语言字符读取与输出操作全解及案例分析 (fgetc, getc, getchar, fgets, gets, fputc, putc, putchar, ...
2020-09-15 15:52:30c语言字符读取与输出操作全解及案例分析 (fgetc, getc, getchar, fgets, gets, fputc, putc, putchar, fputs, puts) 前言 每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文件...前言
-
每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE。FILE是头文件stdio.h中定义的一个结构体,结构如下:
struct iobuf { char *ptr; int cnt; char *base; int flag; int _file; int _charbuf; int _bufsiz; char *tmpfname; }; typedef struct _iobuf FILE;
-
EOF为stdio.h头文件中声明的宏,值为-1。
一、字符读取
1、fgetc函数
fgetc函数从文件流里取出下一个字节并把它作为一个字符(无符号字符)返回。当它到达文件尾或出现错误时,返回EOF,必须通过ferror或feof区分两种情况。
1)引用头文件
#include<stdio.h>
2)函数原型
int fgetc(FILE *stream)
3)参数 stream
这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。
4)返回值
该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
5) 案例
#include <stdio.h> #include <stdlib.h> int main () { FILE *fp; int c; int n = 0; fp = fopen("test.txt","r"); if(fp == NULL) { perror("打开文件时发生错误"); exit(1); } if(ferror(fp)) { printf("Error to read the file\n"); exit(-1); } do { c = fgetc(fp); if( feof(fp) ) { break ; } printf("%c", c); }while(1); fclose(fp); return 0; }
假设有一个文本文件test.txt,它的内容如下。文件将作为实例中的输入:
I have a dream!
编译并运行上面的程序,产生如下结果:
I have a dream!
2、getc函数
getc函数从文件流里取出下一个字节并把它作为一个字符(无符号字符)返回。当它到达文件尾或出现错误时,返回EOF,必须通过ferror或feof区分两种情况。
1) 引用头文件
#include<stdio.h>
2)函数原型
int getc(FILE *stream)
3)参数 stream
这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。
4)返回值
该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
5) 案例
#include<stdio.h> int main() { char cvar; printf("请输入字符:"); cvar = getc(stdin); printf("输入的字符:"); putc(cvar, stdout); return 0; }
程序执行结果如下:
请输入字符:p 输入的字符:p
注:getc函数的作用和fgetc一样,但它有可能被实现为一个宏,如果这样,stream参数就可能被计算不止一次,所以它不能有副作用(例如不能影响变量)。此外,也不能保证能够使用getc的地址作为一个函数指针。
3、getchar函数
C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数。
1)引用头文件
#include<stdio.h>
2)函数原型
int getchar(void)
3)参数NA
4)返回值
该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
5) 案例
#include <stdio.h> int main () { char c; printf("请输入字符:"); c = getchar(); printf("输入的字符:"); putchar(c); return(0); }
程序执行结果如下:
请输入字符:s 输入的字符:s
4、fgets函数
该函数从指定的流 stream 读取一行,并把它存储在 s 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时(它会把遇到的换行符也传递到接收字符串里,再加上一个表示结尾的空字节\0),或者到达文件末尾时,它会停止。
1)引用头文件
#include<stdio.h>
2)函数原型
char *fgets(char *s, int n, FILE *stream)
3)参数
-
s -- 这是一个指向字符数组的指针,该数组存储了要读取的字符串。
-
n -- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 s传递的数组长度。
-
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。
4)返回值
当成功完成时,fgets返回指向字符串s的指针。如果文件流已到达文件尾,fgets会设置这个文件流的EOF标识并返回一个空指针。如果出现读错误,fgets返回一个空指针并设置errno以指示出错的类型。
5) 案例
#include <stdio.h> int main() { FILE *fp; char s[1024]; /* 打开用于读取的文件 */ fp = fopen("test.txt" , "r"); if(fp == NULL) { perror("打开文件时发生错误"); return -1; } if( fgets (s, 1024, fp)!=NULL ) { /* 向标准输出 stdout 写入内容 */ puts(s); } fclose(fp); return 0; }
假设我们有一个文本文件 test.txt,它的内容如下。文件将作为实例中的输入:
Today is 2020
程序运行输出如下结果:
Today is 2020
5、gets函数
该函数从标准输入 stdin 读取一行,并把它存储在 s 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,并且会丢弃遇到的换行符。
1)引用头文件
#include<stdio.h>
2)函数原型
char *gets(char *s)
3)参数
s -- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
4)返回值
如果成功,该函数返回 s。如果发生错误或者到达文件末尾时还未读取任何字符,则返回 NULL。
5) 案例
#include <stdio.h> int main() { char str[50]; printf("请输入一个字符串:"); gets(str); printf("输入的字符串是:%s", str); return(0); }
程序运行输出结果如下:
请输入一个字符串:abcdefg 输入的字符串是:abcdefg
二、字符输出
1、fputc函数
该函数把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
1)引用头文件
#include<stdio.h>
2)函数原型
int fputc(int char, FILE *stream)
3)参数
-
char -- 这是要被写入的字符。该字符以其对应的 int 值进行传递。
-
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流。
4)返回值
如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。
5) 案例
#include <stdio.h> int main () { int c; FILE *fd; fd = fopen("D:\\code\\vscode\\c\\practise\\file.txt","r"); if(fd == NULL) { perror("文件打开出错!\n"); return -1; } c = fgetc(fd); while(c != EOF) { fputc(c,stdout); c=fgetc(fd); } fclose(fd); return 0; }
程序运行输出结果如下:
I have a dream!
2、putc函数
该函数把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
1)引用头文件
#include<stdio.h>
2)函数原型
int putc(int char, FILE *stream)
3)参数
-
char -- 这是要被写入的字符。该字符以其对应的 int 值进行传递。
-
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流。
4)返回值
该函数以无符号 char 强制转换为 int 的形式返回写入的字符,如果发生错误则返回 EOF。
5) 案例
#include <stdio.h> int main () { int c; FILE *fd; fd = fopen("D:\\code\\vscode\\c\\practise\\file.txt","r"); if(fd == NULL) { perror("文件打开出错"); return -1; } c = fgetc(fd); while(c != EOF) { putc(c,stdout); c=fgetc(fd); } fclose(fd); return 0; }
程序运行输出结果如下:
I have a dream!
3、putchar函数
该函数把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中,相当于putc(c,stdout)。
1)引用头文件
#include <stdio.h>
2)函数原型
int putc(int char, FILE *stream)
3)参数
char -- 这是要被写入的字符。该字符以其对应的 int 值进行传递。
4)返回值
该函数以无符号 char 强制转换为 int 的形式返回写入的字符,如果发生错误则返回 EOF。
5) 案例
#include <stdio.h> int main () { char ch; for(ch = 'A' ; ch <= 'Z' ; ch++) { putchar(ch); } return 0; }
程序运行输出结果如下:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
4、fputs函数
该函数把字符串写入到指定的流 stream 中,但不包括空字符。
1)引用头文件
#include <stdio.h>
2)函数原型
int fputs(const char *str, FILE *stream)
3)参数
-
str -- 这是一个字符数组,包含了要写入的以空字符终止的字符序列。
-
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符串的流。
4)返回值
该函数返回一个非负值,如果发生错误则返回 EOF。
5) 案例
#include <stdio.h> int main () { int c; FILE *fd; fd = fopen("D:\\code\\vscode\\c\\practise\\file.txt","w+"); char *s = "c语言程序设计\n"; fputs(s,fd); fputs("python实战",fd); fclose(fd); return 0; }
程序运行输出结果如下:
c语言程序设计 python实战
5、puts函数
该函数把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。
1)引用头文件
#include <stdio.h>
2)函数原型
int puts(const char *str)
3)参数
str -- 这是要被写入的 C 字符串。
4)返回值
如果成功,该函数返回一个非负值,如果发生错误则返回 EOF。
5) 案例
#include <stdio.h> int main () { int c; FILE *fd; fd = fopen("D:\\code\\vscode\\c\\practise\\file.txt","w+"); char *s = "c语言程序设计\n"; puts(s); fclose(fd); return 0; }
程序运行输出结果如下:
c语言程序设计
-
-
C语言可变参数全解
2012-04-25 10:06:23这个头文件定义了一些宏,可以通过这些宏来逐个访问被调函数的没有名字的参数列表,这些参数的个数 和类型都是不知道的。 一个函数可以通过包含一个逗号和三个点(,...)接收可变数量的额外参数,而不需要给出... -
单片机c语言程序.pdf
2021-05-21 04:37:45}} } 例题3 多样流水灯控制 #include //包含51单片机寄存器定义的头文件 sbit S1 P1^4; //将S1位定义为P1.4 引脚 sbit S2 P1^5; //将S2位定义为P1.5引脚 sbit S3 P1^6; //将S3位定义为P1.6引脚 sbit S4 P1^7; //将S4... -
C语言自学完备手册(15)——函数(1)
2018-07-14 17:18:25C语言函数的基础知识 -
C语言自学完备手册(30)——指针(4)
2018-10-24 23:00:11本文介绍C语言中指针与字符串的关系 -
C语言拾遗:#include文件名全解
2014-05-12 16:39:21意思就是,使用#include "stdio.h"如果你项目目录里面,没有stdio.h这个头文件,它还是会定位到C:\Keil\c51\INC\stdio.h这个头文件的 参考资料: #include 带“.h” 和 不带“.h” 有什么区别 ... -
C语言自学完备手册(26)——字符串(3)
2018-10-16 16:25:02在该示例中使用了系统自带函数toupper( )和toupper( )实现大小写的转换,所以需要引入ctype头文件,即代码第3行 #include 运行结果: 请您输入一个由小写英文字母组成的字符串:abcdef 转换成大写后的字符串:... -
C语言自学完备手册(05)——基本数据类型(1)
2018-04-01 11:24:26C语言基本数据类型 -
linux进程全解
2021-08-26 12:00:58任务数据结构定义在头文件include/linux/sched.h中。有些书上称其为进程控制块PCB(Process Control Block)或者进程描述符PD(Processor Descriptor)。 其中保存着用于控制和管理进程的所有信息。主要包括进程当前... -
C语言自学完备手册(32)——文件
2018-11-10 19:56:39介绍C语言中与文件相关的操作 -
C语言自学完备手册(22)——输入输出以及EOF
2018-09-29 15:35:18C语言中的输入输出以及EOF -
C 与 C++ 的 static 关键字全解
2022-01-05 19:15:01C 与 C++ 的 extern 关键字全解_yihuajack的博客-CSDN博客编译器的行为以 gcc/g++ 9.4.0 为准。1 前置知识1.1 声明、定义与初始化声明(声明式)= declarationextern int x;std::size_t numDigits(int number);class... -
计算机二级C语言——错题知识点
2022-03-02 21:30:331.1C语言概述 算法的特征: 一个算法应该具有以下五个重要的特征: 1,有穷性:算法的有穷性是指算法(对任何合法的输入)必须能在执行有限个步骤之后终止; 2,确切性:算法的每一步骤必须有确切的定义; 3,输入:... -
要啥有啥?扫雷代码全解来也!
2021-05-03 22:38:21文章目录要啥有啥?扫雷,我是认真的!一、游戏规则二、游戏实现(1)游戏界面(2)游戏ing初始...初学C语言的小居开始豪横起来,计划用一些简单的C语言知识来实现一个"要啥有啥"的扫雷????,话不多说,讲起! 一、游戏规则 -
自定义类型全解(结构体,位段,枚举,联合)
2021-09-23 19:58:06让我们来看看C语言中对结构体内存对齐是如何规定的。 首先得掌握结构体的对齐规则: 第一个成员在与结构体变量偏移量为0的地址处。 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 对齐数 = 编译器默认... -
Linux fcntl 函数全解
2020-07-31 01:33:07*/ #ifndef F_EXLCK # define F_EXLCK 4 /* or 3 */ # define F_SHLCK 8 /* or 4 */ #endif 从fcntl-linux.h头文件中可以看到l_type除了以上的三种,还有F_SHLCK(共享锁)和F_EXLCK(排他锁) 这里也说了,这两个宏... -
PAT乙级-1059 C语言竞赛 (20分)
2020-03-14 21:43:25PAT乙级-1059 C语言竞赛 (20分)点击链接[PAT乙级-AC全解汇总]**题目:**C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: - 0、冠军将赢得一份“神秘大奖... -
static 全解
2016-03-23 16:44:24原文地址: ... 1. 问题产生 ...在代码用静态变量来表示一个单位,所以需要在头文件中定义。...频繁使用其实效率更高,如果定义的静态变量不用,那就会浪费内存,因为全局数据区生命周期是从...在C语言中这点由为重要! -
异或指针双向链表全解
2021-04-24 01:26:45(编译环境VC6.0,全部通过,可直接复制运行),题目中涉及到了C的位异或运算,我写了一篇“C语言中的位运算”,可看下。代码如下:头文件:"common.h"#include #include #include #include #include #define OVERFLOW... -
Block全解
2019-01-11 13:59:35它是C语言的扩充功能。之所以是拓展,是因为C语言不允许存在这样匿名函数。 1.1 匿名函数 匿名函数是指不带函数名称函数。C语言中,函数是怎样的呢?类似这样: int func(int count); 调用的时候: int result = ... -
linux之进程线程信号全解
2021-02-23 16:20:14一、linux进程全解 1、程序的开始结束及预处理atexit函数 main函数由谁调用;其实在裸机程序中c语言运行前是需要一段引导的汇编代码为c语言运行准备环境的如栈,只是在使用编译器开发过程中我们不需要关注,因为... -
《Object-C》编程全解笔记一
2017-02-12 10:41:17Object-C编程全解笔记:第二章Object-C程序设计,第三章类和继承,第四章对象的类型和动态绑定...... -
MDK 的编译过程及文件类型全解
2019-01-08 17:02:00MDK 的编译过程及文件类型全解 ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,IDE帮我们做好了,了解这些对深入开发是很有帮助的,在有arm9开发的基础上,下面的东西很容易理解,如果看不... -
STM32F4开发指南笔记49——MDK的编译过程及文件类型全解
2021-02-01 17:31:09往往只保留uvprojx文件) 4.2 源文件 源文件是工程中我们最熟悉的内容了,它们就是我们编写的各种源代码,MDK支持c、cpp、h、s、inc类型的源代码文件,其中c、cpp分别是c/c++语言的源代码,h是它们的头文件,s是汇编...