C语言拾遗
子春_贰叁
Because we are young and fearless
展开
-
strlen与sizeof
文章目录strlensizeofstrlen与sizeof的区别strlenstrlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)头文件:string.h或cstring格式:strlen (字符指针表达式)功能:计算给定字符串的(unsigned int型)长度,不包括’\0’在内说明:返回s的长度,不包括结束符NULLsizeof在原创 2021-02-06 13:58:01 · 180 阅读 · 0 评论 -
scanf是怎么从缓冲区读取数据的?
标准库I/O提供了三种缓冲类型:全缓冲,行缓冲,无缓冲标准IO缓冲类型何处使用全缓冲当划出的被填满或者数据读取至末尾时,执行IO操作磁盘文件的读写行缓冲当输入输出过程遇到换行符“\n” 或者分配的缓冲区已满,则执行IO操作涉及终端的读写操作如sdin/stout无缓冲当有数据产生时,立刻由相应设备进行处理一般stderr使用无缓冲,不代表系统不缓存标准输入缓冲区stdin使用行缓冲的方式存储输入(接收写入设备的数据存到缓冲区中),用户存入的数据先存在临时原创 2021-01-29 15:45:53 · 1206 阅读 · 0 评论 -
C语言中的宏替换
#define替换规则在程序中扩展#define定义符号和宏1.在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号,其首先被调换2.替换文本随后被插入到程序中原来文本的位置,对于宏,参数名被他们的值替换3.最后再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号,若包含则重复部骤注意:1.宏参数和#define中可出现其它#define定义的变量,对于宏不能出现递归2.预处理器搜索#define定义的符号时,字符串常量不被搜索...原创 2021-01-03 18:07:08 · 1135 阅读 · 0 评论 -
C语言中的‘\0’是什么?
’\0’是什么?‘\0’ 是转义字符 ,为了告诉编译器’\0’是空字符,而不是字符0.字符’0’对应的二进制为00110000,而’\0’对应的二进制为00000000在c语言中通常用一个字符数组来存放字符串,’\0’ 是字符串的结束标志,任何字符串之后都会自动加上’\0’。如果字符串末尾少了‘\0’转义字符,则在输出时可能会出现乱码问题。接下来结合代码来看1.不指定字符串数组长度时正确赋值char str1[] = {"abc"};char str2[] = {"abd\0"}//字符数原创 2020-09-24 11:52:55 · 65694 阅读 · 5 评论 -
C语言中的位操作符总结
C语言中基本的位操作符有 左移、右移、按位与、按位或、按位异或、取反)我们用表格先归总一下名称符号运算规则左移<<高位丢弃,低位补0右移>>对无符号数,高位补0. 对有符号数,算数右移高位补符号位,逻辑右移高位补0按位与&两位同为“1”,结果才为“1”,否则为0按位或l两位只要有一个“1”,结果就为“1”,否则为0按位异或^两位 同“0”异“1”取反~“1”变“0”,“0”变“1”下面来结合原创 2020-05-14 14:54:43 · 1773 阅读 · 0 评论