C
AmoreMc
这个作者很懒,什么都没留下…
展开
-
C - int constant
int* - pointer to intint const * - pointer to const intint * const - const pointer to intint const * const - const pointer to const intNow the first const can be on either side of the type so:const int * == int const *const int * const == int const *原创 2021-12-12 05:18:25 · 755 阅读 · 0 评论 -
C - 零长度数组
最近在看代码有看到变长数组的应用,这里整合了两篇比较好的变长数组的文章分享给大家,文章链接见文末。零长度数组零长度数组,顾名思义,就是长度为0的数组。ANSI C 标准规定:定义一个数组时,数组的长度必须是一个常数,即数组的长度在编译的时候是确定的。在ANSI C 中定义一个数组的方法如下:int a[10];C99 新标准规定:可以定义一个变长数组。int len;int a[len];也就是说,数组的长度在编译时是未确定的,在程序运行的时候才确定,甚至可以由用户指定大小。比如,我原创 2021-12-10 03:05:27 · 417 阅读 · 0 评论 -
C - do{....} while 0 & goto
在一些函数中,我们可能需要在return语句之前做一些清理工作,比如释放在函数开始处由malloc申请的内存空间,使用goto总是一种简单的方法:int foo(){ somestruct *ptr = malloc(...); dosomething...; if(error) goto END; dosomething...; if(error) goto END; dosomething...;END: f原创 2021-12-10 02:51:16 · 467 阅读 · 0 评论 -
C - do{.....} while 0
在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:#define __set_task_state(tsk, state_value) \ do { (tsk)->state = (state_value); } while (0)在Linux内核和其它一些著名的C库中有许多使用do{…}while(0)的宏定义。这种宏的用途是什么?有什么好处?Google的Robert Love(先前从事Linux内核开发)给我们解答如下:do{…原创 2021-12-10 02:47:00 · 107 阅读 · 0 评论 -
Difference between char* and const char*?
char* is a mutable pointer to a mutable character/string.const char* is a mutable pointer to an immutable character/string. You cannot change the contents of the location(s) this pointer points to. Also, compilers are required to give error messages when原创 2021-11-07 15:09:37 · 121 阅读 · 0 评论 -
Constant pointer vs Pointer to constant
const int* ptr; declares ptr a pointer to const int type. You can modify ptr itself but the object pointed to by ptr shall not be modified.const int a = 10;const int* ptr = &a; *ptr = 5; // wrongptr++; // right Whileint * const ptr; de原创 2021-11-07 15:06:11 · 130 阅读 · 0 评论 -
C语言 | 指针
函数参数为指针本质就是拿内存地址直接操作,所有的变量(包括形参和指针变量)都指向同一个地址,对那个地址内的内容直接操作#include <stdio.h>void swap (int *a, int *b); // 指针作为参数int main(){ int i = 20, j =10; swap (&i, &j); printf("i = %d, j = %d\n", i,j);return 0;}void swap (int..原创 2021-05-05 15:05:44 · 64 阅读 · 0 评论