C陷阱&缺陷
1.1= 与 ==
例1:
本例中循环语句的本意是跳过文件中的空格符、制表符、换行符
while(c=''||c=='\t'||c=='\n')
c=getc(f);
c= ''||c=='\t'||c=='\n'
死循环
例2:
if((filedesc==open(argv[i],0))<0)
error();
永远不会被调用
1.2 & 和 | 不同于&& 和||
1.3 C语言运算符
a---b <==> a-- -b
a - --b
y=x/*p 表示注释 -》y=x/(*p)
1.4 整型常量
1.5 字符和字符串
注:用单引号括起来的一个字符代表一个整数
用双引号括起来的一个字符代表一个指针
2.1 函数
float *g() , (*h)();
*g() 《==》*(g()) g是一个函数 该函数的返回值类型为指向浮点数的指针。
h是一个函数指针 ,h所指向的函数的返回值为浮点类型
3.1 指针 数组
struct
{
int p[4];
double x;
}b[17];
声明了b是一个拥有17个元素数组,其中每个元素都是一个结构体
*a 就是数组a中下标为0的元素引用。
*a=84;
清空数组
int month;
for(month=0;month<12;month++)
{
int day;
for(day=0;day<31;day++)
{
calendar[month][day]=0;
}
}
3.1 非数组的指针
库函数strlen返回参数中字符串所包括的字符数目,
而作为结束标志的空字符并未在计算在内,因此,strlen(s)
的值是n,那么字符串的实际需要n+1个字符空间。
char *r,*malloc();
r=malloc(strlen(s)+strlen(t)+1);
if(!r)
{
complain();
exit(1);
}
strcpy(r,s);
strcat(r,t);
/* 一段时间以后*/
free(r);
3.3 作为参数的数组声明
函数的声明:
int strlen(char s[])
{
/*具体声明*/
}
《==》
int strlen(char *s)
{
/*具体声明*/
}
main(int argc,char *argv[])
{
/*具体内容*/
}
《==》
main(int argc,char **argv)
{
/*具体内容*/
}
&nbs
相关文档:
5、#define宏定义。宏只是简单的文本替换,很容易引起歧义。
#include <stdio.h>
#define CONS(a,b) (int)(a##e##b)
#define STR(s) #s
int main()
{
printf(STR(vck));
printf("\n");
printf("%d\n",CONS(2,3));
return 0; ......
用函数access,头文件是io.h,原型:
int access(const char *filename, int amode);
amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。
这个函数还可以检查其它文件属性:
06 &nbs ......
C函数要在程序中用到以下这些宏:
void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );
va_list:用来保存宏va_start、va_arg和va_end所需信息的一种类型。为了访问变长参数列表中的参数,必须声明
& ......
C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
1. registerbgidriver函数
registerbgidriver函数的功能是登录已连接进来的图形驱动程序代码,其用法为:int registerbgidriver(void(*driver)(void ......