C
p.c.wang
这个作者很懒,什么都没留下…
展开
-
assert(int expression)
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单b转载 2013-08-23 16:56:40 · 791 阅读 · 0 评论 -
C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换
① 使用gmtime函数或localtime函数将time_t类型的时间日期转换为struct tm类型: 使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年、月、日等数据。gmtime函数可以方便的对time_t类型数据进行转换,将其转换为tm结构的数据方便数据阅读。gmtime函数的原型如下:struct tm *gmtime(转载 2015-03-24 15:27:00 · 9692 阅读 · 0 评论 -
libc、glibc和glib的关系
【glibc 和 libc】glibc 和 libc 都是 Linux 下的 C 函数库。libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。【glibc 和 glib】 错误观点:glib 前面有个 "g" ,所以认为 glib 是 GNU 的东东;同时认为 glibc 是 glib 的转载 2015-02-04 09:39:24 · 1435 阅读 · 0 评论 -
一个C问题
char str[] = {"abcd"}和 char* str = {"abcd"}的区别char* get_str(void){ char str[] = {"abcd"}; return str;}char str[] = {"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的空转载 2015-02-02 18:52:19 · 595 阅读 · 0 评论 -
C语言中的宏
1. #可以将宏参数当成字符串。#define TOSTRING(arg) (#arg)printf("%s\n%s\n", TOSTRING(abc), TOSTRING(123));结果:abc1232. ##可以将宏参数进行连接,但是最后产生一个C语言符号,而不是字符串。#define CONNECTSTR(str1, str2) (final_s原创 2014-12-04 10:27:25 · 701 阅读 · 0 评论 -
C语言文件操作函数
clearerr(清除文件流的错误旗标)相关函数 feof表头文件 #include定义函数 void clearerr(FILE * stream);函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。fdopen(将文件描述词转为文件指针)相关函数 fopen,open,fclose表头文件 #include定原创 2014-08-24 12:19:17 · 895 阅读 · 0 评论 -
获得文件属性的函数调用实例
获取文件属性信息,在终端下可以直接利用ls- l命令,在编程时,用到以下三个函数:#include#include#include int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0原创 2014-08-24 11:37:51 · 1032 阅读 · 0 评论 -
typedef的用途
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针转载 2014-04-09 16:25:58 · 851 阅读 · 0 评论 -
volatile的作用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic转载 2014-04-16 21:08:45 · 602 阅读 · 0 评论 -
关于“类型,参数,变量”的声明中,其编程风格
下面几种参数的书写风格:、void foo(const int &x);void foo(const int& x);void foo(int const &x);void foo(int const& x);对于“常整数”而言,原创 2013-08-13 14:48:25 · 1031 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2013-04-04 16:59:26 · 798 阅读 · 0 评论 -
C语言中字符串常量到底存在哪了?
常量存储总结局部变量、静态局部变量、全局变量、全局静态变量、字符串常量以及动态申请的内存区1、局部变量存储在栈中2、全局变量、静态变量(全局和局部静态变量)存储在静态存储区3、new申请的内存是在堆中4、字符串常量也是存储在静态存储区补充说明:1、栈中的变量内存会随着定义所在区间的结束自动释放;而对于堆,需要手动free,否则它就一直存在,直到程序结束;2、对于静态转载 2014-03-20 22:03:47 · 8049 阅读 · 1 评论 -
C语言中处理异常中断的方法
setjmp与刺激的abort()和exit()相比,goto语句看起来是处理异常的更可行方案。不幸的是,goto是本地的:它只能跳到所在函数内部的标号上,而不能将控制权转移到所在程序的任意地点(当然,除非你的所有代码都在main体中)。为了解决这个限制,C函数库提供了setjmp()和longjmp()函数,它们分别承担非局部标号和goto作用。头文件申明了这些函数及同时转载 2013-10-22 18:46:48 · 3804 阅读 · 0 评论 -
C/C++产生随机数方法总结
C/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。例如:#includ转载 2013-10-20 16:52:33 · 1431 阅读 · 0 评论 -
NULL和NUL
在《Expert C Programming》中有这么一段阐述:一个‘L’的NUL和两个‘L’的NULL牢记下面的话,它有助于回忆指针和ASCII码零的正确术语: 一个‘L’的NUL用于结束一个ASCII字符串, 两个‘L’的NULL用于表示什么也不指向(空指针) ASCII字符中的'\0'被称为NUL。表示哪里也不指向的特殊原创 2013-08-30 08:31:06 · 1163 阅读 · 0 评论 -
解析#pragma指令
解析#pragma指令预处理指令,设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为:#Pragma Para,其中Para 为参数,下面来看一些常用的参数。(1) message参数。转载 2013-08-29 20:21:12 · 1255 阅读 · 0 评论 -
各种日期函数使用说明
友情提示:本文大部分内容摘自C语言中文网,更详细内容请参考C语言中文网。在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下:#ifndef _TM_DEFINEDstruct tm {int tm_sec; /* 秒–取值区间为[0,59] */int tm_min; /* 分 - 取值区间为[0,59] */转载 2013-08-26 17:01:50 · 974 阅读 · 0 评论 -
C语言标识符命名规则
预备知识:什么是内部标识符和外部标识符?A N S I标准规定,标识符可以为任意长度,但外部名必须至少能由前6个字符唯一地区分,并且不区分大小写。这里外部名指的是在链接过程中所涉及的标识符,其中包括文件间共享的函数名和全局变量名。因此外部名abcdefgh和abcdef将被当作同一个标识符处理。A N S I标准还规定内部名必须至少能由前31个字符唯一地区分。内部名指的是仅出现原创 2013-08-24 12:30:10 · 8548 阅读 · 0 评论 -
C语言getopt()函数
相关函数表头文件 #include定义函数 int getopt(int argc,char * const argv[ ],const char * optstring);函数说明该函数的argc和argv参数通常直接从main()的参数直接传递而来。optstring是选项字母组成的字串。如果该字串里的任一字符后面有冒号,那么这个选项原创 2015-04-13 16:16:50 · 1487 阅读 · 0 评论