C语言
ManFresh
我思故我在 & what i say what i think!
谦虚、尊重、信任
展开
-
实参和形参
形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。没有形参的函数在形参表的位置应该写void.main函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。实参:可以是常量、转载 2016-07-24 19:35:36 · 692 阅读 · 0 评论 -
结构体中的位段
位段,C语言允许在结构体中以位BIT为单位来指定其成员所占内存长度。原创 2016-08-25 16:57:34 · 585 阅读 · 0 评论 -
C语言读取的结束方法及getchar()和putchar(int)、gets
EOF 是个宏,其意思是:End Of File,文件尾标志。 从数值上来看,就是整数-1在C语言的头文件中对其进行了宏定义:stdio.h: # define EOF (-1)当读文件操作时,遇到文件结束位置或读数据出错均会返回 EOF。 (C语言中所有的输入输出操作均是按读文件的思想来设计的,或者说,是文件操作的一种特例,如getchar()就是fgetc(stdin原创 2016-08-01 16:07:07 · 6676 阅读 · 0 评论 -
关键字volatile有什么含意 并给出三个不同的例子
关键字volatile有什么含意 并给出三个不同的例子原创 2016-07-24 19:36:14 · 5990 阅读 · 0 评论 -
strcpy和memcpy主要有以下3方面的区别
strcpy和memcpy主要有以下3方面的区别原创 2016-09-20 08:39:55 · 229 阅读 · 0 评论 -
const 和 #define区别
const 和 #define区别原创 2016-09-20 08:48:39 · 271 阅读 · 0 评论 -
程序中内存位置
程序中内存位置原创 2016-09-03 19:49:08 · 270 阅读 · 0 评论 -
局部变量和全局变量,extern和static
局部变量和全局变量,extern和static原创 2016-07-24 19:34:59 · 2499 阅读 · 0 评论 -
运算符优先级
运算符优先级原创 2016-08-03 18:18:38 · 6171 阅读 · 0 评论 -
基本知识点
基本知识点原创 2016-07-24 19:32:16 · 328 阅读 · 0 评论 -
.c与.h的故事
.c与.h的故事原创 2016-08-17 11:14:04 · 577 阅读 · 0 评论 -
结构体定义与作为函数参数的结构
在结构体内部如下定义是违法的:struct s{ int a; struct s b;}因为内部包含自己的成员永远不会终止,类似递归。但是如下定义是合法的:struct s{ int a; struct s *b;}这是因为其内部是个指向该结构体类型的指针,而指针的长度是可以确定的,一般四个字节。原创 2016-08-24 20:20:37 · 3915 阅读 · 0 评论 -
结构体大小
计算结构体大小时需要考虑其内存布局,结构体在内存中存放是按单元存放的,每个单元多大取决于结构体中最大基本类型的大小。在缺省对齐下我先给你说下三条准则吧,【1】结构体变量的首地址能够被其最宽基本类型成员的大小所整除【2】结构体每个成员相对于结构体首地址的偏移量是成员大小的整数背【3】结构体的总大小为结构体最宽基本类型成员大小的整数背以上都是结构体中只有基本类型时的缺省对齐方式,当有嵌原创 2016-08-09 17:18:06 · 718 阅读 · 0 评论 -
setjmp和longjmp完成保存上下文和切换上下文的工作
#include int setjmp(jmp_buf env);setjmp函数的功能是将函数在此处的上下文保存在jmp_buf结构体中,以供longjmp从此结构中恢复过来。若直接调用该函数,返回值为0;若该函数从longjmp调用返回,返回值为非零,由longjmp函数提供。Void longjmp(jmp_bufenv,intval)函数的功能是从jmp_buf结构体中恢原创 2016-07-24 19:32:56 · 409 阅读 · 0 评论 -
复杂声明的例题解析
指针是C\C++语言的精髓,我教你怎么认复杂的指针。看int (*fun)(int ,int ),首先明确变量是fun,标识符最先从fun向右边走一步,是),终止。向左走一步是*,说明fun是一个指针。*左边是(,终止。以(*fun)为整体向右走一步,是(),()里面是(int ,int),说明fun是一个函数,传递的参数转载 2016-07-28 15:31:31 · 304 阅读 · 0 评论 -
malloc()、calloc()和realloc()
C语言跟内存申请相关的函数主要有 alloca、calloc、malloc、free、realloc等. alloca是向栈申请内存,因此无需释放. malloc分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间. calloc则将初始化这部分的内存,设置为0. realloc则对mal转载 2016-07-30 15:22:43 · 242 阅读 · 0 评论 -
分配内存的问题
使用内存分配应该注意的问题:检查内存是否分配成功,内存声明周期程序结束时要释放,避免导致内存泄露。使用过程中避免指针越界访问。1、malloc是分配多少个字节的内存,里面是数字void GetMemory(char*p) {p = (char*)malloc(100);}void Test(void){char *str = NULL;GetMemory(str原创 2016-07-24 19:31:06 · 501 阅读 · 0 评论 -
可变参数的函数
具体可参考《C和指针》中P134,下面是一个关于一个求多个参数值平均值的函数。float average(int nValues,...){ va_list varArg;int count;float sum=0;va_start(varArg,nValues);for(count=0;count{ sum+=va_arg(varArg,int);原创 2016-08-21 15:03:17 · 226 阅读 · 0 评论 -
指针数组和数组指针的区别&指针函数和函数指针的区别
指针数组和指针函数的本质没有变化,还是数组和函数。而数组指针和函数指针,这是说明这是指针,指向的类型分别是数组和函数。一、指针数组:即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointer to an array,即指向数组的指针还要注意的是他们用法的区别,下面举例说明。int* a[4] 指针数组原创 2016-07-29 15:25:07 · 301 阅读 · 0 评论 -
数组指针、函数指针
比如b[3]={1,2,3};其中&b是指向整个数组的类型即b[][3],而b是指向b[0]的地址,它等价于&b[0];但是注意sizeof(b)的话,得到的却是整个数组的大小,而且sizeof(&b)也是整个数组的大小。比如a[3][3]的话,按照类推,从大到小的方法,&a是指向整个数组的类型即a[][3][3],而a则是a[][3]类型的地址,它等价于&a[0];而a[0]是指向a[0][原创 2016-07-24 19:36:59 · 270 阅读 · 0 评论 -
str函数和mem函数
1、两函数的头文件都是一样的;2、str带头的函数可以处理字符串,遇到NULL(\0)就会停止操作,而mem带头的函数则不用,但是它需要指定复制值的长度,以字节计算;3、常见str带头的函数有strlen、strcpy、strcat、strcmp、strncpy等,字符串查找。4、常见mem带头的函数有memcpy、memmove、memchr、memcmp、memset等;例如:原创 2016-08-24 16:02:46 · 1746 阅读 · 0 评论 -
文本流和二进制流
文本流和二进制流原创 2016-08-30 18:15:32 · 702 阅读 · 0 评论 -
C语言一个常见错误
例一:下面的函数会出现错误,char *p1 = ”123”, *p2 = ”ABC”, str[50] = “xyz”;strcpy(str + 2, strcat(p1, p2));printr(“%s\n”, str);原因是:char *p1="123" 声明了个字符串指针p1,指向字符串“ 123 ”,此时的“ 123 ”存放在常量区,并没有在拷贝原创 2016-09-03 19:43:22 · 446 阅读 · 0 评论 -
getopt函数
函数说明 getopt()用来分析命令行参数。参数argc和argv分别代表参数个数和内容,跟main()函数的命令行参数是一样的。参数 optstring为选项字符串, 告知 getopt()可以处理哪个选项以及哪个选项需要参数,如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数,全域变量optarg 即会指向此额外参数。如果在处理期间遇到了不符合optstring指...原创 2018-12-15 20:34:13 · 255 阅读 · 0 评论