回 帖 发 新 帖 刷新版面

主题:[原创]我开始自学C的时作的笔记(笔记其中一部分)---如有不妥之处请指正.

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)

回复列表 (共21个回复)

沙发

不错不错,
你当初记下的都是精华,
只是,脱离了实际内容的“精华”究竟能否指导实践?
你现在又理解得怎样了?
关心的应该是这个。

板凳

不错..不错.`..~~

有些东西现在的理解与原来的理解应该是不同的~

3 楼

0+(int)(400.0*rand()/(RAND_MAX+1.0))  0-400

4 楼

随机数好象都是楼上的写法吧

5 楼

不错,我都没这样仔细,能多放几篇吗

6 楼

谢谢各位捧场!!!!!!!!!!

7 楼

多多练习,把这些精华置入到自己的日常习惯中!

8 楼

int a[10] ; int *p=a;  sizeof(a) = =20;sizeof(p)= =2;
这个是和系统相关的吧

9 楼

应该多几个辑的,支持。

10 楼

不错不错

我来回复

您尚未登录,请登录后再回复。点此登录或注册