基本知识点
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为假,跳出循环。
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为假,跳出循环。
相关文章推荐
- Java设计模式:工厂模式
- guava 常用API说明
- HTTP 和 SCOKET 通信的区别? TCP,UDP 的连接方法?HTTP 几种常用方式
- 分配内存的问题
- binlog
- sublime txt 设置在浏览器预览
- vijos1906:联合权值
- python核心编程第七章练习
- Dynamic Memory
- Java反射(二):反射的使用
- tcpip学习
- URAL 1014
- POJ 3254 Corn Fields [动态规划 简单状态压缩]
- Markdown编辑器语法
- POJ 1456 Supermarket
- hibernate debug学习总结
- BZOJ 1642: [Usaco2007 Nov]Milking Time 挤奶时间
- 第一章.对象导论之异常处理
- linux安装中文字体
- C++中substr函数的用法