①strlen()函数作用:计算字符串的长度,当遇到“\n”字符时结束,即遇到数值“0”时结束计算,有一点特别要注意当这个函数用来计算数组的长度的时候遇到数值0他就停止计算了!
②register关键字修饰的变量不可以使用“&”取地址符来获取地址,因为它可能不在内存。
③ 问:“static”关键字修饰的变量能被改变不?
答:肯定可以,它在编译的时候放在静态区,生长期是在整个程序的运行的周期。
④关键字“const”修饰的变量的属性是只读,注意它是变量,其值在编译期间是不能被使用的,因此,在定义数组的时候千万不要傻叉一样拿const变量来指定数组的个数,这样是编译不过的
⑤“const”关键字修饰指针变量时跟位置有关,且看下面的例子
const int *p; 和 int const *p; //两个一样*p只读,p可变
int * const p; //*p可变,p不可变
const * const p; //两个都不可变
归纳为一句话就是:忽略类型名,“近水楼台先得月”!哈哈,好好意会意会^_^
说到类型名,有一点不得不说,typedef出来的是“新的”类型名,记得喔,遇到const时也要会变。
⑥volatile可防止代码被编译器自做多情地优化,看一个例子
int i=10;
int j=i; //执行完这一句,编译器并没有把赋给j的值丢掉
int k=i; //继续使用上面没有丢掉的值,不会产生汇编代码去重新加载i的值
看,要是期间有谁改变了i值不就出事了!
⑦写一个测试代码来判断当前系统的存储方式是大端(高地址存低字节)还是小端
...
union test_mod
{
int i;
char ch;
}c;
c.i=1;
return (c.ch); //如果返回的是1,说明是小端模式
⑧enum枚举类型:枚举常量在编译时确定其值,从有赋值处开始依次加1,如果没有赋值则从0开始加
#include <stdio.h>
void main()
{
char len=0;
enum ColorVal
{
BLUE=1,YELLOW,
RED,
ORANGE,
GREEN
} MyColor;
len = sizeof(MyColor);
printf("\n yellow = %d\n",YELLOW);
printf(" sizeof(MyColor) = %d\n\n",len);
}
结果:
原因:枚举变量是int型的,上面定义的MyColor就是一个枚举变量,而枚举变量一个时刻只能取一个值,这个值就是从枚举的“区间”里边取出来的,所以说,接下来不用说都明白啦
有一点要注意的是枚举变量里面的成员是可以单独拿出来使用的,成员是常量哦,而且记住不能MyColor.BLUE类似于结构体那样的操作
好好学C,一步两步,一步两步!