1.static修饰符是一个能减少命名冲突的有效工具。
在函数不需要被其他文件调用的时候,声明时可以定义为关键字static。
一方面更容易维护,不会被影响。另一方面减少了名字空间的污染。
2.const保护数组
在函数需要处理数组时,用const关键字可以使数组不被修改。// 因为数组传入的是指针,可能破坏原数组
int process(const int array[ ] , int len );
通常也把指向常量的指针代入函数,保证数据不会被修改。
3.非常量的数据既可以赋给普通指针,也可以赋给指向常量的指针。
但常量只能赋值给指向常量的指针。
const int array[4] = { 0,1,2,3 } ; const int *p = array; / / 合法 int *p=array; / /不合法
4.不能更换对象的指针
改变const和数据类型的位置,可以让指针指向的对象不改变
如:int const *p
5.注意IF关键字中 == 的使用,若写成=,则会编译没问题,运行出错。
也有人写成
if ( MAX /*常量*/ == max /*变量*/ )这种形式,避免少写“=”。
6.volatile关键字通常使用在指向易变内存空间指针的声明中。比如指向键盘输入的字符,因为输入的字符随时
会变,这样的限定符,让编译器每次必须从内存中重新读取。
7.void *memcpy(void *dest, const void *src, size_t n);
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
函数返回指向dest的指针。source和destin所指的内存区域可以重叠,但是如果source和destin所指的内存区域重叠,那么这个函数并
不能够确保source所在重叠区域在拷贝之前被覆盖。
8.extern void *malloc(unsigned int num_bytes);
Malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任
何其它类型的指针。如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free
()函数将内存块释放。
相关函数:calloc、realloc、free、_alloca。
malloc函数常与sizeof()一块使用,防止出现内存问题。
double *p=(double*)malloc(n*sizeof(double));
9.void *memset(void *s, int ch, size_t n);
将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。
memset函数一般也与sizeof()连用
char
buffer[20];
memset(buffer,0,
sizeof
(
char
)*20);
因为是按字节,所以置0没什么区别,但是如果不是char型数据,置为别的可能会出错。
<1>
而,如下程序想把数组中的元素值设置成1,却是不可行的
<2>
10.版权的书写规范 //参考高质量c编程指南