字符串输入输出函数
输入函数
scanf() 格式化输入输出 ,输出中不能有空格
gets() 非格式化输出,输出中间可以有空格, 回车键结束输入. 注意,不安全的哦亲,char a[5]; 在用gets(a);函数输入的时候我们即使输入了6个字符, 系 统也不会报错的.
fgets() 安全的输入函数,如我们的输入字符数超过了字符数组规定的数量, 那么fgets()函数会自动帮我砍掉多出来的部分并且会在最后默认加\0,
如果我们的输入比字符数组规定的数量少两个以上, 那么fgets()会自动在末尾加上\n(自动换行) \0, 如果只是少一个的话 不会产生\n 但\0还 是会有的 . 使用格式: fgets(ch, sizeof(ch), stdin);
输入字符函数
printf() 格式化输出 不能自动换行
puts() 不格式化输出 可以自动换行
fputs() 不能自动换行 格式 fputs(ch, stdout);
const 修饰符, 可以把一个变量,变常量
const 在 * 号左边 值不能变, 指向可以变
const 在 * 号 右边 值能变, 指向不能变
const 在 * 号 左右两边 值不能变 ,指向也不能变
c语言中的内存管理
内存的5大区域
1,栈区 局部变量和临时变量
2,堆区 程序执行中,动态分配的内存
3,BSS 未被初始化的全局变量和静态变量
4,数据段(常量区) 已经被初始化的全局变量和静态数据
5,代码区 源码代码程序编译产生的二进制数据
动态内存管理,申请内存空间
malloc 使用要加头文件 #include <stdlib.h> void*malloc(申请的数量) int *p = int *malloc(100) *p 存在栈区, malloc 存在 堆区.
malloc 不会初始化 申请的空间
menset (p, '0', 100) 将所有申请的空间初始化为 0.loin
calloc int *p = (int *) calloc(5,4); // 申请5个长度为4的空间. calloc 可以把申请的空间初始化为0;
realloc 重新改变一个空间的大小 p =( int *) realloc ( p , size);
free free( p ) 释放指定空间 p是我们新申请的内存空间 free后 p 是一个野指针.不释放的话会照成内存泄露.
指针函数 返回值是指针的函数 叫做指针函数 int (*p1)(int a,int b); 或者 int (*p1)(int ,int)
结构体
结构体 就是若干个相同或者不同类型的数据组成的新类型
|
|