C语言进阶总结2

1.static修饰符是一个能减少命名冲突的有效工具。

 在函数不需要被其他文件调用的时候,声明时可以定义为关键字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

()函数将内存块释放。

相关函数:callocreallocfree、_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()连用

charbuffer[20];

memset(buffer,0,sizeof(char)*20);

 

因为是按字节,所以置0没什么区别,但是如果不是char型数据,置为别的可能会出错。

数组中的元素值都设置成字符1的两种区别

<1>

而,如下程序想把数组中的元素值设置成1,却是不可行的

<2>

 

 

 10.版权的书写规范  //参考高质量c编程指南

 



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值