定义一个常量: #define PRICE 30
字符变量和字符串变量的区别: 每一个字符串的结尾加一个'/0'来表示字符串结束标志
输入输出包含头文件: #include stdio.h #include math.h
inta,b, c;
scanf("%d%c%df",&a,&b,&c); 输入函数 &a可以用一个指针来代替 p
extend声明外部变量:
1.在定一点之前的函数想要引用该外部变量.则应该在引用之前用关键字extern对该变量做外部变量声明
2.个不同的文件
函数都是默认为外部函数 extern 隐藏关键词,可以被其他文件调用
预处理不是c的一部分,是ANSIC
预处理-->编译-->连接
预处理的三种:
宏定义 #define PI 3.1415 用一个指定的标识符来代表一个字符串
#define S(r) PI*r*r
area=s(9) --> area= 3.1415*9*9
文件包含 #include <math.h>
条件编译 源程序中对一部分满足一定条件的才进行编译
#ifdef 标识符
程序段1
#else
程序段2
#endif
int a=10; int *p=&a; *p == a;
C语言中实参变量和形参变量之间的数据传递是单向的"值传递"方式. 指针变量作函数参数也要遵循这一规则
int[] a={1,2,5} int*p; p=&a[0] 等价 p=a
指向数组的指针 p[i] 等价 *(p+i) | a[i] == *(a+i)==*(p+i)
for(p=a; p<(a+10); p++){
printf("%d",*p);
}
指针变量数组 int (*p)[4]
c语言中两种方法访问字符串:
1. 用字符数组存放一个字符串,然后输出
char str[] = "Hello world";
printf("%s", str);
2. 用字符指针指向一个字符串
char *str = "hello world";
等价char *str; str = "Hello world";
printf("%s",str);
3. 不能直接声明 string srt = "abc"; ??
指向函数的指针: int (*p)() 调用 c=(*p)(a,b)
int *fun(int a, int b) 函数返回指针类型
int (*p)[4] 定义一个指针, 指向一个数组
int *p[n] 定义一个数组, 数组的值就是指针
结构体关键字: struct
struct student{int id; char[20] name}
struct student stu; stu.id=1; stu.name="zhangshan"
struct *p = &stu;
(*p).id = stu.id = p->id
void *malloc(unsigned int size);
void *calloc(unsigned n, unsigned size);
void free(void *p)
struct student *p = (struct student *)malloc(sizeof(struct student))
共用体: union 占用内存的长度等于最长成员的长度,同一瞬间只能存一个成员
union test{int i; char c; float f}
stdio.h 对文件进行操作的库
文件类型: FILE 定义 FILE *file
文件打开 file=fopen(文件名, 打开方式"r")
文件关闭 fclose(fp)
--字符
文件的读写 fputc(ch,file) ch = fgetc(fp)
ch != EOF 文件结束标志 或者 while(! feof(fp))
从一个文件复制到另一个文件
while(!feof(in)){
fputc(fgetc(in), out);
}
--
fread(buffer, size, count, file)
fwriter(buffer, size, count, file)
rewind(file) 是位置指针重新返回文件的开头