C语言的一些复习
main 函数 2种:
1--》
int main(void) //括号里的void可以去掉
{
return 0;
}//无参数形式
2--》
int main(int argc, char *argv[])
{
return 0;
}//带参数形式
c语言学习记录
1、格式化输入输出:
动态设置输出宽度和精度
printf("%*.*f*\n",m,n,f);其中m对应第一个*,设置输出宽度,n对应第二个*,设置精度
printf函数有返回值,是输出字符的数量
采用堆栈内存结构,堆栈中的数据采用”后进先出“的方式,对遇printf参数,总是按从后到前的方式存入堆栈中
例子:
1 int main()
2 {
3 int i;
4 i = 3;
5 printf("%d\t%d\t%d\t%d\t%d\t", ++i,--i,i--,i++);
6 ......
7 }
分析:
输出:3 2 4 3
先将参数从右到左计算后存入堆栈中,依次压栈。。。3,4,2,3(从栈底向栈顶),再出栈显示
scanf("%d%*d%d", &a,&b);
输入时将会忽略第二个输入值
getchar() 与 getch()的区别
getchar()会将用户的输入存入缓冲区,而getch()会直接读取用户输入,不会等到用户输入回车就会返回值
2、类型结构定义
结构定义:
struct 结构名
{
变量;
。。。
}[变量]。。。;
#define 新名字 旧名字 //宏定义
例子: #define OK 1
类型说明,可以用户自定义类型的标识
typedef 原类型名 新类型名;
比如:
typedef struct data
{
结构内的变量类型说明;
。。。。。。
}新的类型名DATA;
定义的新的类型名可以代替 struct data ,直接DATA mydata;
3、内存管理
分配内存函数:
1) malloc(字节数量);
double *p = (double *)malloc(100*sizeof(double));
2) calloc(); 进行动态分配内存
void *calloc(size_t count,size_t size);
count 代表要分配元素的数量 size代表每个元素占用的字节数
3)调整已经分配内存的函数:
void *realloc(void *ptr, size_t newsize);
ptr指向已经存在的内存首地址 将大小改为newsize大小,分配成功则返回指向新地址的指针,否则NULL
在扩展分配时,原始数据保持不变
4)释放内存函数
void free(void *p);
释放指针p所指向的内存
一般的写法: free(p); p = NULL;
4、文件操作
定义文件指针
FILE *fp;
打开文件:
FILE *fopen(const char *filename, const char *mode);
fp = fopen("路径","r"); //注意路径在windows下反斜杠: C:\\dev-cpp\\test......注意转移字符的运用
关闭文件
fclose(FILE *fp);
例如: fclose(fp);
向文件中输出字符
putc();或者 fputc();字符串 fputs();fprintf();
读取 getc(); 或者 fgetc(); 字符串 fgets();fscanf();
5、存储类型
register 寄存器变量
extern 外部变量 //应用体会
static 静态变量
外部变量例子:
两个文件 main.c test.c
main.c................
int i,j;
int main()
{
....
return 0;
}
test.c................
extern int i,j;
int myfunction()
{
......
return 0;
}
静态变量可以保存多次计算之后得出的额值,即允许对其进行多次修改