一、数组
——函数参数表中的数组实际上就是指针。
sizeof求数组的的长度(字节)
int a[ 10 ];
intp=a;
(p+1)==a[1];
——给指针加一是让指针指向下一个变量
(如果指针指向的不是一片连续的空间那么这种运算没有意义)
——void表示不知道指向什么东西的指针
计算的时候和char相同(但是不相通)
——转换指针的类型
intp=&i; voidp=(void*)p;
这并没有改变p所指变量的类型,只是让后人以不同的眼光通过p看向他所指的变量。
二、字符串
——char* s=“hello,word!”;
s为一个指针,初始化指向一个字符串常量,这个常量出于计算机内存的编码区,是只读不写的,所以这个s实际上是const chars,试图对s所指的字符串做写入会导致严重的后果
——charstr=“hello”;
——char word[]=“hello”;
指针是指向内存中存放hello的地方,适用于不知道这个字符串在哪,处理参数,需要动态分配空间
而数组是把hello复制过来,它使用的空间会被当做本地变量自动回收
三、结构
struct name{
int x;
int y;
}p1,p2;
四、全局变量
printf(“in %s name=%d”,funk,name);
全局变量没有初始化系统会自动给他0的值
——静态全局变量 static实际上是特殊的全局变量,具有全局的生存周期,但是只有函数内的局部作用域
五、宏定义
#开头的是编译预处理指令
它们不是c语言成分,但是c语言离不开他们
#define PI 3.14159(宏定义,原始的文本的替换)
宏里面的宏也会被替换,宏如果要写到下一行需要在行末加\ 宏后面可以加注释
带参数的宏,每个参数出现的地方都要有括号
六、大程序文件
全局变量的声明 在前面加extern
只有声明才能放在头文件里,定义放在头文件容易重复定义,这时候可以用标准头文件结构,
全局变量需要在头文件声明,extern加变量的定义
为了避免头文件中的定义在.c文件中重复定义 ,可以用标准头文件:
#ifndef_头文件名_H_
#define_头文件名_H_
结尾加#endif
七、格式画的输入或输出
-左对齐 +在前面放+或- (space)正数留空 0零填充
number 最小字符数 .number小数点后面的位数 *可以代替number
pow求次方,pow(number,n)=number的n次方