分类: C/C++
2015-08-14 00:33:25
a) 一个整型数(An integer)2.关键字static的作用是什么?
int a;
b) 一个指向整型数的指针(A pointer to an integer)
int *a;
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)
int** a;
d) 一个有10个整型数的数组(An array of 10 integers)
int a[10];
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)
int* a[10];
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
int (*a)[10]
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
int (*a)(int arg);
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer
argument and return an integer )
int (*a[10])(int argc);
- 变量存储到静态区
- 全局变量或者函数,限定有效区域,仅自己可见
3.关键字const是什么含意?
- 赋予"只读"属性
- 防止被编译器优化,含
- 义,对于一些垃圾操作,编译器会耍小聪明的无视掉.
- 告诉编译器会在程序外被改变,必须从内存中读取,而不能把他放在cache或寄存器中重复使用。
消位:与非 & :a &= ~(1<<3) 置位:或 | :a |= (1<<3)
*(unsigned long *)0x67a9 = 0xaa66;
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf(" Area = %f", area);
return area;
}
8.下面的代码输出是什么,为什么?
- 不能返回值
- 不能传参
- 浮点运算并不通用
- printf影响性能
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) puts("> 6") : puts("<= 6");
}
- 无符号 与 有符号 进行运算 , 将当作无符号运算,-20会变成反码:-20->0x14->0xffffffeb->0xffffffec + 6 = 0xfffffff2
- 所以结果是 > 6 的.
9.unsigned int zero = 0;
10.尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?
- 为了兼顾平台特性,int 可以是 2 字节 或者 4字节 ,所以写成 unsigned int compzero = ~0;
- 内存碎片,变量的有效时间,碎片收集
char *ptr;
if ((ptr = (char *)malloc(0)) == NULL)
puts("Got a null pointer");
else
puts("Got a valid pointer");
- 申请 0 字节 和 1 字节的效果是一样的