用预处理指令#define声明一个常数,用来表示一年有多少秒?
#define SENCOND_PER_YEAR (365*24*60*60)UL
注意几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
3). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要
1)一个参数既可以是const还可以是volatile吗?解释为什么。
1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
2); 一个指针可以是volatile 吗?解释为什么。
是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。
static/const/volatile含义
C++中引用和指针的区别
置位,清零
//将对应的管脚设置为输出
unsigned long *gpc0_conf;
unsigned long *gpc0_data;
//将对应的管脚设置为输出
*gpc0_conf &= ~(0xff<<12);
*gpc0_conf |= 0x11<<12;
//亮灯
*gpc0_data |= 0x3<<3;
//灭灯
*gpc0_data &= ~(0x3<<3);
a,int a;
b,int *a;
c,int * *a;
d,int a[10]
e,int *a[10]
f,int (*a)[10]
g,int (*a)(int a)
h,int(*a[10])(int a)
C++中引用与指针的区别
p1 = (unsigned char *) 0x801000;
p2 = (unsigned long *) 0x810000;
请问
p1+5 =
p2+5 =
p1+5=801005
p2+5=810014
解释:
p1=(unsigned char*)0x801000;
是给指针变量赋值,即把十六进制0x801000放到字符指针
变量中,即指针变量p1的值就是0x801000
p2=(unsigned long*)0x810000;也是给指针变量赋值,
输出结果p1+5的值是801005,因为指针变量指向的值字符,加一表示指针向后移动一个字节,那么加5代表向后移动5个字节,所以输入801005
p2+5的值是810014,因为指针变量指向的长整形的,加一表示指针向后移动4个字节,那么加5代表向后移动20个字节,所以输入810014,(输出时十六进制)要是十进制就是810020了