C语言小竹凳(1)
C语言小板凳(1)
⑥volatile可防止代码被编译器自做多情地优化,看一个例子
...
union test_mod
{
int i;
char ch;
}c;
c.i=1;
return (c.ch); //如果返回的是1,说明是小端模式
⑧enum枚举类型:枚举常量在编译时确定其值,从有赋值处开始依次加1,如果没有赋值则从0开始加
#include <stdio.h>
void main()
{
结果:
原因:枚举变量是int型的,上面定义的MyColor就是一个枚举变量,而枚举变量一个时刻只能取一个值,这个值就是从枚举的“区间”里边取出来的,所以说,接下来不用说都明白啦
有一点要注意的是枚举变量里面的成员是可以单独拿出来使用的,成员是常量哦,而且记住不能MyColor.BLUE类似于结构体那样的操作
好好学C,一步两步,一步两步!
①strlen()函数作用:计算字符串的长度,当遇到“\n”字符时结束,即遇到数值“0”时结束计算,有一点特别要注意当这个函数用来计算数组的长度的时候遇到数值0他就停止计算了!
②register关键字修饰的变量不可以使用“&”取地址符来获取地址,因为它可能不在内存。
答:肯定可以,它在编译的时候放在静态区,生长期是在整个程序的运行的周期。
④关键字“const”修饰的变量的属性是只读,注意它是变量,其值在编译期间是不能被使用的,因此,在定义数组的时候千万不要傻叉一样拿const变量来指定数组的个数,这样是编译不过的
const int *p; 和 int const *p; //两个一样*p只读,p可变
int * const p; //*p可变,p不可变
const * const p; //两个都不可变归纳为一句话就是:忽略类型名,“近水楼台先得月”!哈哈,好好意会意会^_^
⑥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,一步两步,一步两步!