写点有趣的C问题
Chz_1
实践出真知!用程序解答疑问!
展开
-
if多个条件判断时要想清楚
#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; for (i = 0; i < 5; i++) { if (i != 1 || i != 2) { printf("[1] i = %d\n", i);//全部打印 } } printf("=====...原创 2019-07-01 23:35:02 · 3114 阅读 · 0 评论 -
局部锁和全局锁的区别
1、单线程的锁用局部锁,锁不住其他线程的访问#include <stdio.h>#include <pthread.h>typedef struct { int num; char array[20];} PthreadTestPara_t;PthreadTestPara_t p_struct[20] = {0};int g_num = 0;void...原创 2019-07-03 00:27:51 · 2291 阅读 · 0 评论 -
strlen和sizeof的区别
区别:1、strlen函数是遇到0x00即结束。而且是个函数;sizeof是个宏定义,求的是指针变量的大小或者是数组的长度。注意:1、sizeof求指针大小,如char *p, int *p等等,类似这种指针,大小均为4。2、sizeof求数组大小,如char p[12], int p[24],单位是一个字节,根据类型大小和维度计算。3、从第1点和第2 点也可以看出指针和数组的区别!参...原创 2019-07-11 23:47:04 · 266 阅读 · 0 评论 -
为什么用void*做参数
刚开始接触c的朋友可能会奇怪,形参的类型为什么用void *??有这个问题说明对c语言自动的函数接口的写法,用法还不是很熟悉。简单搜一下write的用法。man手册走一遭。gec@ubuntu:/mnt/hgfs/share/LinuxC/str$ man 2 writegec@ubuntu:/mnt/hgfs/share/LinuxC/str$可以看到如下的接口设计。ssize_t w...原创 2019-07-11 23:57:39 · 4261 阅读 · 0 评论 -
慎用gmtime和localtime
这两个函数都是获取时间的函数,但是这两个函数不能用于多线程。曾经在使用的时候发现时间莫名其妙发生了改变。后来仔细看了一下man手册,才发现这两个函数用的是静态空间。注意多线程安全问题。原文如下。如果要避免多线程造成值在使用过程中被改变,就应该使用gmtime_r。及时将获取的值取出来The gmtime() function converts the calendar timetim...原创 2019-07-22 21:59:11 · 1312 阅读 · 0 评论