Const在C(C++)中的作用:
1:用于定义常量:const定义的常量编译器可以对其进行数据静态类型安全检查。
2:Const修饰函数形式参数,输入参数为自定义和抽象数据类型时,为”const&传递”。
例:void fun(A const &a)
即加入了引用,变为引用传递。
3:const修饰函数的返回值:如给”指针传递”的函数返回值加const,z则返回值不能被直接修改,且返回值只能被赋值给加const修饰的同类型指针。
例:const char *Getchar(void){};
const char *ch = Getchar();
4:const修饰类的成员函数(函数定义体):任何不会修改数据成员的函数都应用const修饰,防止修改数据成员或调用非const成员函数,该方法实现如下:
例:int Getcount(void) const;
static在C(C++)中的作用:
1:在函数体中,一个被声明为静态的变量在这一函数被调用的过程中维持其值不变。
2:在模块内,(但在函数外),一个被声明为的变量可以被模块内所有函数访问,但不能被模块外其他函数访问,他是一个本地的全局变量。
3:在模块内好,一个被声明为静态的函数只能被这一模块的其他函数调用。那就是限制在声明它的模块的本底范围内使用。
全局变量及局部变量与静态变量的区别:
局部变量变为静态变量改变了它的储存方式,即改变了它的生存期;
全局变量改变为静态变量后改变了它的作用域,限制了它的适用范围。
且static变量只初始化一次,static函数在内存中仅有一份,而普通函数在每次调用时都复制一次。
sizeof与strlen的区别
1.sizeof是操作符,strlen是函数。
2.sizeof操作符的结果类型是size_t,他在头文件中的typedef为unsignedint类型,该类型保证能容纳实现所建立的最大对象的字节大小。
3.Sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以”\0”结尾的。
4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。
5*.sizeof所求的值在编译时就计算过了,即sizeof(x)可用来定义数组维数。Strlen的结果在运行时才计算。
- sizeof常见形式:sizeof(int)或sizeof(x),即因为sizeof为操作符。strlen计算字符串数组长度结果为写入字符串的长度,而sizeof计算的是数组所占内存空间的大小;strlen计算指针指向的字符串的长度,而sizeof计算的时指针占用的内存空间大小。
sizeof的用途
1.与储存分配和I/O系统那样的例程进行通信。
例:void* malloc(szie_t size);
Szie_t fread(void* ptr,size_t size,size_t nmemb,FILE* stream);
2.查看某个类型的对象在内存中所占的单元字节。
例:void* memset(void* s,int c,sizeof(s));
3.在动态分配一对象时,可以让系统知道要分配多少内存。
4.便于一些类型的扩充,由于操作数的字节数在实现时可能出现变化,建议在涉及操作数字节大小时用sizeof来代替常量计算。
5.如果操作数是函数中数组形参或函数类型的形参,则sizeof给出的是其指针的大小。