C笔记(转)

来源:互联网 发布:剑三妖艳成男脸型数据 编辑:程序博客网 时间:2024/06/07 14:56
 
1、     二维数组名————→理解为   行指针;
2、     int a,*p; p=&a, 有p= =&a;
3、     a---b 就是 (a- -) - (b);
4、     else 始终与同一结括号内最近的未匹配的if 结合。
5、     int a[10] ; int *p=a;   sizeof(a) = =20;sizeof(p)= =2;
6、     int a[2][3] ,*p;    p=a是非法的,因为a是一个二维数组,即“数组的数组”,在此a名称会将其转为一个指向数组的指针;而p是一个指向整形变量的指针,这个语句试图将一种类型的指针赋值给另一种类型的指针,所以是非法的。只有(*p)[3]才能。
7、     对一个数组进行初始化的函数 ZeroMemory(c,sizeof(c)),c 为一数组,于是把数组c清零。
8、(高)算术运算符—— 移位运算符—— 关系运算符——逻辑运算符(低)
            +-*/            《 》           >,=,<         || 、&&
9、全局变量和静态变量未初始化时默认为0外,其他(函数)是不可以的
10、指针变量= = 数组(只是数组名是常量,不能进行自增自减)
11、C语言中会自动地将作为参数的数组声明转为相应的指针声明。
12、main(int a, char*b[]) 与main(int a, char**b)完全等价;
13、空指针并非空字符串
14、int (*ap)[31]表示*ap是一个有着31个整形元素的数组,因此ap就是一个指向这样的数组的指针。
15、int (*p)( )是一个函数指针,表示p是一个指向函数的指针,*p是一个函数。
int *p()是一个指针函数,表示p是一个返回一个指向整数的指针的函数。
16、(1)形参中的数组不能再理解为数组,而必须理解为指针:不能用 sizeof() 求大小;但可以再赋值,这与数组名的指针常量性质不一样。传值时有内容的复制,但数组内的元素可能很多,为避免内容的大量复制而占用太多的内存,C 规定数组传参就是传指针。
        (2)int a[][] 不能做形参,因为 a 是指向 int[] 这样一种数据类型的数组指针,但下标大小没有确定。而 int a[][8] 可以,并可以直接用二维数组名(无须显示转换)做其实参。
   17、在处理一个数组的元素时,使用指针自增(p++)的方式通常比直接使用数组下标更快,使用指针能够使程序得以优化。
     18、C 允许定义多维数组,维数上限由编译器定义。但多于三维的数组并不常用,因为多维数组所需的内存空间对维数呈指数增长。并且,计算各维下标会占用 CPU 时间(存取多维数组元素的速度比存取一维数组元素的速度慢)。
     19、对数组初始化时注意,C89 要求必须使用常量初始化字符,而 C99 允许使用非常量初始化字符来初始化本地数组。
20、gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与scanf函数不同的。
21、如果我们有一个int test(int a)的函数。那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。
22、a+i,a[i],*(a+i),&a[i][0]是等同的。 此外,&a[i]和a[i]也是等同的。因为在二维数组中不能把&a[i]理解为元素a[i]的地址,不存在元素a[i]。
23、函数不能作为赋值对象,下列语句是错误的:s w a p ( x ,y) =100。
24、rand()%401产生的才是0~400的随机数。(包括0和400)
25、

用变量a给出下面的定义
a)
一个整型数(An integer
int a;

b)
一个指向整型数的指针(A pointer to an integerint *a;
c)
一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer
int **a;

d)
一个有10个整型数的数组(An array of 10 integersint a[10];  
e)
一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers
int *a[10];

f)
一个指向有10个整型数数组的指针(A pointer to an array of 10 integersint (*a)[10];
g)
一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integerint (*a)(int);
h)
一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer

int (*a[10])(int);

26、

中断是嵌入式系中重要的成部分,这导致了很多编译开发商提供一种扩让标C支持中断。具代表事是,生了一个新的关键 __interrupt。下面的代就使用了__interrupt关键字去定了一个中断服子程序(ISR)请评论一下段代的。

__interrupt double compute_area (double radius)
{ double area = PI * radius * radius;
printf(" Area = %f", area);
return area;
}

ISR 不能返回一个值;ISR 不能传递参数;不允许在ISR中做浮点运算

 

27、

1.       请填写下列两个函数分别实现对变量a实现置位和清除“BIT3”位。

 

#define BIT3 (0x1<<3)
static int a;
void set_bit3(void)
{

      a = a | BIT3;

}

void clear_bit3(void)
{

      a = a & (~BIT3);

}

 

 

原创粉丝点击