C语言的入门
乌月龙井
这个作者很懒,什么都没留下…
展开
-
typedef struct和struct的几种情况
在C中,定义一个结构,可以有一下几种1.先定义结构体,再定义变量,这种方式不能省略struct关键字struct student { int age; char* name; }; struct student st1,st2;2.定义结构体的同时定义变量struct student { int age; char*name; }st1,st2;3.直接定义变量,这种定义方式下,不能后...转载 2018-03-19 13:38:37 · 404 阅读 · 0 评论 -
标准I/0函数解析
scanf&printfint scanf(const char * restrict format,...); 标准化输入函数,读取字符串的时候,遇到空格(换行,TAB)就停止,所以只能输入一个单词gets&putsgets(char* buffer);遇到回车的时候才结束输入,同时抛弃回车符,但是加一个‘\0’,并形成字符串,但是gets有可能出现越界问题,不能检测输入字符串是...翻译 2018-07-03 16:37:19 · 487 阅读 · 0 评论 -
C的内存分配方式和内存分配函数的内在机制
C语言的内存分配主要有一下几种情况1.静态存储区分配。内存在编译阶段就被分配好的,在程序执行期间一直存在。程序结束才释放。一般全局变量,static变量采用这种方式2. 从栈上分配。这种一般是执行函数时采用。函数内的局部变量都是在栈上获取内存,函数执行完毕的时候释放内存3.从堆上分配。这种是程序员自己调用malloc/new来申请内存,也需要程序员自己释放C语言和内存申请相关的函数有alloc,c...原创 2018-07-03 11:00:46 · 207 阅读 · 0 评论 -
C专家编程
1.NUL和NULL的区别 NULL代表指针不指向任何地方,NUL是代表字符串的结尾。字符串以’\0'结尾,NUL是'\0'的一个宏,需要自己定义2switch中没有任何符合条件的case的情况怎么处理? 有default则运行default,没有则整个switch什么都不做3 默认缺省关键字的函数是全局可见吗 void fun1(){...}这样的函数是全局可见的,任何链接到它...原创 2018-05-08 11:21:13 · 117 阅读 · 0 评论 -
Linux时间类型、函数和休眠函数
http://blog.csdn.net/luotuo44/article/details/39374759转载 2018-05-02 17:48:43 · 217 阅读 · 0 评论 -
const限定符和指针的关系
当有const参与到指针的赋值操作时,经常让人困扰,主要是两个方面1. int const *p ,const int*p ,int *const p...这些到底是怎么分辨2.const int num=100; int *p=#上面的代码会什么会有warning信息出现针对第一个问题,可以这么理解:凡是出现在*之前的const限定符,都是在限定指针指向的对象 int ...原创 2018-04-23 10:10:12 · 278 阅读 · 0 评论 -
C的单向链表及基本操作
链表实现FIFO功能;push:结点压入链表pop:弹出最后一个被压入的结点printnode:打印整个链表freenode:释放制定的结点占据的内存freelist:释放整个链表getlen:获取链表长度reverse:链表翻转find:寻找指定的结点,没有返回NULL,有多个返回查找到的第一个结点insert:在指定位置插入一个结点PS:在链表的翻转以及排序问题上,利用find指定位置的结点,...原创 2018-03-29 17:08:45 · 163 阅读 · 0 评论 -
字符串和十六进制之间的转换
#include <stdio.h> #include <string.h> int strToHex(char *ch, char *hex); int hexToStr(char *hex, char *ch); int hexCharToValue(const char ch); char valueToHexCh(const int value); int mai...转载 2018-03-29 13:43:33 · 1120 阅读 · 0 评论 -
malloc和free
malloc和free的意义已经无需赘述,基本用法就是申请和释放内存char*ptr=NULL; ptr=(char*)malloc(1024*sizeof(char)); /* do something with ptr */ free(ptr); 然而在实际使用过程中,直接这样裸用malloc和free风险很大,主要风险是用ptr来接收malloc返回的地址的时候ptr释...原创 2018-03-28 13:51:45 · 191 阅读 · 0 评论 -
C与指针
在C中,注释常用的方法是/* statements */,注释之间不能嵌套在1中的注释最好用来写评论,如果要注释掉代码,最好用#if指令#if 0 some statements #endif数组作为参数的时候传递的是数组首地址,也就是实参和形参共享一个地址,数组的下标量做参数时,情况和普通变量一样,这个时候形参和实参各自有各自的内存空间,互不干扰。C中只有4种基本类型,整型,浮点,指针,聚合...原创 2018-04-09 14:46:54 · 124 阅读 · 0 评论 -
C标准的头文件
C标准的头文件有多少个?87年 ANSI公布的 ANSI C标准有15个,90年 ISO因为接受了ANSI的标准,所以公布的 ISO C 也是15个95年 ISO增加3个头文件 18个99年 ISO增加6个头文件 24个11年 ISO增加5个头文件 29个实际上C的标准头文件到底有多少,是看编译器的,编译器支持标准ANSI C,那就是15个,如果支持C99,就是24个,支持C11,就是29个。1...转载 2018-03-21 10:43:40 · 1946 阅读 · 0 评论 -
static,extern& inline
1.inline 关键字 这个关键字是为了告诉编译器,某个函数需要被设置成内联函数。所谓内联函数,就是把函数体内嵌到每一处调用的地方,而不是在每次调用的时候讲函数压入栈中,开展一次完整的函数调用过程。内联函数要解决的问题就是某些频繁调用的函数会增大开销这个问题。然而现在的编译器已经不用用户去告诉它哪些函数需要设置内联,编译器甚至会忽略掉inline,而是根据自己的一套规则确定是否有函数需要设...转载 2018-03-20 10:11:17 · 209 阅读 · 0 评论 -
使用POSIX开发的优缺点
优点:可移植性,这也是使用posix最大的好处方便测试,window,Mac OS,linux都支持posix,可以直接在PC端进行测试资料丰富缺点:牺牲一点效率转载 2018-03-20 09:17:14 · 439 阅读 · 0 评论 -
POSIX和C99标准头文件
ISO C标准定义的头文件(24项)<assert.h> ---------------------- 验证程序断言<complex.h> ---------------------- 支持复数算术运算<ctype.h> ---------------------- 字符类型<errno.h> ...转载 2018-03-19 17:53:41 · 964 阅读 · 0 评论 -
time_t
time_t实际上是一个long int,传说可以保存1970到现在的秒数,最多可以到2038年。在POSIX和C自己的标准库中,都有对time_t的定义C标准库定义time_t的定义在time.h中;linux对它的定义在sys/time.h中;也就是,如果代码平台无关,就应该用time.h头文件,如果要和平台相关,就要用sys/time.h...原创 2018-03-19 17:53:06 · 534 阅读 · 0 评论 -
extern
内容摘自stack overflow1. 定义 extern可用在变量和函数前,用以表示变量或者函数定义在别的文件中(或者本文件其它位置),提示编译器遇到该变量或者函数的时候去别的文件中去寻找定义2. 使用方法 最合适的声明和定义一个全局变量的方法是在一个头文件(file3.h)中声明一个extern变量,某一个源文件引用头文件并定义这个变量,其他的源文件就可以直接引用这个变量...翻译 2018-03-19 13:39:54 · 101 阅读 · 0 评论 -
C中的堆(heap)和栈(stack)
堆是分配给应用程序的,会随着进程退出被回收再分配;栈是分配给线程的,会随着线程退出被回收再分配stack的大小是在线程启动的时候可以指定大小的,heap的大小理论上要看系统的配置的大小,理论上可以达到系统的极值。heap中的内容是线程安全的程序启动的时候,会被分配一个heap,heap初始分配的时候会给根据OS区别,而给不一样的大小,但是会随着程序的需求增加而增大,stack则要在使用线程时候自己...转载 2018-03-19 13:39:19 · 200 阅读 · 0 评论 -
枚举转换字符串方法
enum { EVENT_START, EVENT_SUCCESS, EVENT_FAILED, EVENT_IDLE }; #define STR_EVENT(M) \ ((M)==EVENT_START?"EVENT_START":\ ((M)==EVENT_SUCCESS?"EVENT_SUCCESS":\ ((M)==EVENT_FAILED?"EV...原创 2018-07-18 14:56:50 · 967 阅读 · 0 评论