1、strlen和sizeof的区别?
sizeof运算符:是求字节运算符,用于计算运算对象在内存中所占字节的多少。
strlen是函数:求字符串的长度,以\0为结束。
2、结构体中占用内存的字节数?
3、什么是预编译,何时需要预编译
答案:
(1)、总是使用不经常改动的大型代码体。
(2)、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
4、char * const p 、char const * p 、const char *p 上述三个区别?
答案:
char * const p; //常量指针,p的值不可以修改
char const * p; //指向常量的指针,指向的常量值不可以改
const char *p; //和char const *p 一样
5、关键字static、const、volatile的作用?
答:static:定义静态变量;const:表示常量不可以修改的变量;volatile:提示编译器对象的值可能在编译器未监测到的情况下改变。
6、程序的局部变量存在于(栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。
7、队列和栈有什么区别?
答:队列先进先出,栈后进先出。
8、如何测量一个数组的大小
sizeof(str)/sizeof(str[0]);
9、++i与i++及运算优先级
答: ++i:在使用i之前,先是i的值加1;i++:在使用i后,使i的值加1;++优先级是2高于* /的优先级是3;
10、#include<a.h>和#include“a.h” 有什么区别?
答:对于#include <a.h> ,编译器从标准库路径开始搜索a.h;对于#include “a.h” ,编译器从用户的工作路径开始搜索a.h
11、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
答:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。