您的位置:首页 > 其它

基本知识点

2016-07-24 19:32 162 查看
1、assert是一个在调试阶段安全无害的测试,宏。在运行过程中,如果assert的参数为假,那么程序就会中止。

2、sizeof得到的是计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。对于数组变量名得到的是数组字节数,而如果是指针变量则返回的是指针变量所占有的该变量类型的大小。

结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。规则比较复杂,具体参见网上。

另外sizeof(struct a)结构体要加struct,如果是typedef则不需要加struct。

而sizeof联合体则是成员中最大的变量。

sizeof与strlen的区别,strlen遇到'\0'结束,所以只计算实际字符数,不包括结尾的'\0',而sizeof会计算实际分配空间的大小,所以遇到'\0'不会结束计数。

3、memset(void *s,int ch,size_t n)函数,将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。以字节为单位进行赋值的,所以不能对字节数组以外的数组赋值。

4、qsort(jiSu,26,sizeof(jiSu[0]),biJiao);

降序排列函数,头文件标准库,第一个是排序数组,第二个是数组大小,第三个是元素大小,最后是比较函数。

int biJiao(const void *c1,const void*c2)

{

   return *(int*)c2-*(int*)c1;

}

5、想字符串相关的函数都在头文件string里面,而判断是否是字母、数字空格等是在头文件ctype里面。

    1、const char * p 和 char const * p 是一个意思,都是p所指向的变量的值不能改变。

    2、char* const p,意思是p所指向的地址是不能改变的

6、都是把格式好的字符串输出,只是输出的目标不一样:

   1printf,是把格式字符串输出到标准输出(一般是屏幕,可以重定向)。

   2sprintf,是把格式字符串输出到指定字符串中,所以参数比printf多一个char*。那就是目标字符串地址。

        int value=1741;
char str[50];
sprintf(str,"%d",value);

        可以实现把整型转化成了字符串型。

   3fprintf, 是把格式字符串输出到指定文件设备中,所以参数笔printf多一个文件指针FILE*。

7、inti=3,j;

       j=sizeof(i+++i++);  

       printf("%d%d",i,j);函数中sizeof中编译器会默认不让i+++i++计算发生的。

8、分析递归题目时,最好是画图。

9、limits.h提供整数和浮点类型的大小限制的信息。

10、msb<<4+lsb中算术运算符优先级高于移位运算符。

11、==和!=的高于赋值符,也高于位操作符。

12、大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式 进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。

13、变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。

声明用于向程序表明变量的类型和名字,定义包括声明:当定义变量时声明了它的类型和名字。可以通过使用extern关键字声明变量名而不定义它。不定义变量的声明包括对象名、对象类型前的关键字extern。

14、for(a;b;c)的执行顺序,先执行a,再判断b是否为真,若为真执行循环体,执行c

然后再次判断b是否为真,若为真执行循环体,执行c

。。。

直到b为假,跳出循环。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: