随笔分类 - 编程语言
摘要:最近想找一个C语言处理嵌套结构体和结构体数组的json库,理想的是能够很容易处理复杂结构体嵌套,并且使用简单的,但是没找到比较合适的,于是打算自己封装一个; 两个问题: C语言结构体本身没有元数据,这也就没法在生成过程中自动分析类型进行处理,所以,需要生成对应结构体的元数据信息,根据元数据完成对结构
阅读全文
摘要:1 int snprintf(char *str, size_t size, const char *format, ...); 从用snprintf开始,size参数一直传的都是buff_size-1,像这样: 1 int main() 2 { 3 char *a = "hello"; 4 5 c
阅读全文
摘要:C语言中!!的作用是?看例子; 1 #include <stdio.h> 2 3 int main() 4 { 5 int test = 666; 6 7 printf("test=%d !test=%d !!test=%d\n", test, !test, !!test); 8 9 return
阅读全文
摘要:restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代
阅读全文
摘要:这样的不带参数的函数声明,在c中是合法的,表示任意参数;当然我们自己写代码最好不要这样写了,但是读老代码还是会遇到; 1 #include <stdio.h> 2 3 void fun(); 4 5 int main() 6 { 7 fun(1); 8 return 0; 9 } 10 11 voi
阅读全文
摘要:1. filter(function, sequence): 对sequence中的元素执行function函数,返回由function函数执行结果为True的元素组成的序列,注意新序列类型与传入序列相同 测试:返回正数 #!/usr/bin/env python def findPositiveN
阅读全文
摘要:关于void*,今天同学提起,其实以前在《C++编程思想》中看过,内容是C语言中void*和其他 类型的相互赋值都是可以的,但是C++中是不允许把void*赋值给其他类型的。做个代码试验如下: 1 /* test.c void*测试 */ 2 3 #include <stdio.h> 4 #incl
阅读全文
摘要:关于讨论代码中的 c = a+++b 这个表达式的面试题一直都在出现。从很直观的角度上来说你可以理解成为以下的两种形式 一个是 c = (a++) + b; 另一种是c = a + (++b); 其实做过编译程序的人可以考虑以下过程,在词法分析阶段要进行的是将输入的文件切成token,并形成toke
阅读全文
摘要:前两天写个程序,传参数的时候想传个二维数组进去,结果悲剧了,函数写成 Fun (int **p){},原来没有这么写过,以为这么写也是对的,结果错了,查了些资料, 做个总结。 Fun (int **p){} 这里面的int **p //这里的p不是二维数组的指针,而是指向指针的指针,即二级指针。 正
阅读全文