随笔分类 - C语言
在学习和使用C语言的过程中,记录一些知识
摘要:(1) 基本数据类型的对齐每个类型的起始地址必须是自身大小的整数倍: char(1字节) → 任意地址。short(2字节) → 地址是2的倍数(如0x1002, 0x1004)。int(4字节) → 地址是4的倍数(如0x1004, 0x1008)。double(8字节) → 地址是8的倍数(如0
阅读全文
摘要:3.6 do-while 循环编写 itoa(), 使用 do-while 比较合适 void reverse(char *s, int n) { for (int ix = 0, jx = n -1; ix < jx; ix++, jx--) { int tmp = s[ix]; s[ix] =
阅读全文
摘要:练习 2-2 使用逻辑运算符修改 for循环 原来的循环 for (int i = 0; i < limit-1 && (c=getchar()) != '\n' && c != EOF; i++) s[i] = c; 答案中的循环 int flag = 0, i = 0; while (flag)
阅读全文
摘要:函数名称 说明 int atoi(const char *str) 将字符串转化成整型,如果无效,就返回0 int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。 void srand(unsigned int seed) 该函数设置seed数值,对应 rand 使
阅读全文
摘要:函数名称 说明 double sqrt(double x) 返回x的平方根 double pow(double x, double y) 返回x的y次幂
阅读全文
摘要:函数声明 说明 int tolower(int c) 将大写字母转化成小写字母 int toupper(int c) 将小写字母转化成大写字母 int islower(int c) 检查字母是否是小写字母 int isupper(int c) 检查字母是否是大写字母 int isdigit(int
阅读全文
摘要:函数要有高效性和易用性 4.1 函数的基本内容 查看strindex()的实现,该功能和strstr()类似, 都是查找子串的位置 int strindex(char s[], char t[]) { int idx, i, j; for (idx = 0; s[idx] != '\0'; idx+
阅读全文
摘要:1. scanf()原型 int scanf(const char *format) char arr[100] = {}; scanf("%s", arr); // 遇到空格,输入就结束了 scanf("%[^\n]\n"); // 遇到空格不结束,遇到换行才结束; 并且把'\n'去掉,不会影响后
阅读全文
摘要:1.5 字符输入和输出 如下两个输入和输出函数,是基础版本,它们可以以扩充出很多版本int getchar(void)int putchar(int char) 1.5.3 行统计 #include <stdio.h> void main() { int ch, nl = 0; while ((ch
阅读全文
摘要:函数名称 说明 char *strcat(char *dest, const char *src) char *strpbrk(const char *str1, const char *str2) 检索字符串 str1 中第一个 出现在str2 中字符,不包含空结束字符。也就是说,依次检验字符串
阅读全文
摘要:一、assert.h C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。void assert(int expression) 这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。 $ cat 1.c #incl
阅读全文
摘要:如下内容主要参考:https://www.runoob.com/cprogramming/c-standard-library-time-h.html time相关的函数在 time.h 中可以查看原型。如下命令可以找出time.h的路径: whereis time.h 在time.h中声明了很多和
阅读全文
摘要:0. 记录一下 测试数据 和 swap 函数 #include <stdio.h> void swap(int *p_a, int *p_b) { *p_a = *p_a ^ *p_b; *p_b = *p_a ^ *p_b; *p_a = *p_a ^ *p_b; } void print_arr
阅读全文
摘要:1. const 常量指针是说指不可以通过该指针修改它指向的变量的数值,但是该指针可以指向其他的变量 int x, y; int const *p = &x; x = 5; // 可以 *p = 5; // 不可以 p = &y; // 可以 指针常量 是说指针是个常量,不可以修改了,所以定义时,要
阅读全文
摘要:参考文章:https://blog.csdn.net/yikai2009/article/details/8650221 1. 原子操作:原子操作指的是在执行过程中不会被别的代码所中断的操作.。分为 位 和 整型变量 两类原子操作。 typedef struct { volatile int cou
阅读全文
摘要:#include <pthread.h> pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;int pthread_rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t
阅读全文
摘要:1. errno.h 中包含 errno 这个错误保存值 string.h 包含 strerror() 函数 ,它的原型 是 char *strerror(int errnum); 输入值应该是errno,返回值是 errno 对应的 错误提示字符串 stdio.h 包含perror() 函数,它的
阅读全文
摘要:参考博客:https://www.cnblogs.com/alinh/p/6905221.html“ 信号量与互斥锁的主要不同在于”灯”的概念,灯亮则意味着资源可用,灯灭则意味着不可用。 信号量 除了灯亮/灯灭这种二元灯以外,也可以采用大于1的灯数,以表示资源数大于1,这时可以称之为多元灯 而互斥锁
阅读全文
摘要:摘录博客: https://blog.csdn.net/hzhsan/article/details/25124901 内容如下: 1.__sync_fetch_and_add 函数系列 __sync_fetch_and_add系列一共有十二个函数,有加/减/与/或/异或/等函数的原子性操作函数。_
阅读全文
摘要:摘录博客:https://blog.csdn.net/wangweiqiang1325/article/details/51787534 格式如下: printf("\033[属性设置;字背景颜色;字体颜色m 字符串 \033[0m" ); 例子:printf("\033[1;45;33m HELL
阅读全文

浙公网安备 33010602011771号