1、
scanf的返回值由后面的参数决定scanf(“%d%d”,& a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2如果只有a被成功读入,返回值为1如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。且返回值为int型。
2、
atoi(地址或字符串)把一个字符串转换成int型整数,需要头文件stdlib.h
atoi在遇到数字时开启转换,遇到非数字或者字符串结束而结束,如果不能正确转换则函数返回0。
itoa把数字转化成字符串,功能与sprintf类似
int num = 10; char arr[50];
itoa(num,arr,16); //把变量num以16进制的形式变成字符串存在地址arr里
ftoa把浮点数转成字符串
3、
想要extern去引用其他文件的成员,那个成员要在全局定义。在一个文件中,如果定义了一个全局变量,如int num =10; 在主函数或者该文件其他函数内部用关键字extern修饰这个变量,就等于共用了这个变量,共用之后一处修改处处改变,其实也可以不必用extern再次修饰,既然在同一个文件中,并且num变量有是全局的,在函数内部直接拿来用就行了。
4、
25、static修饰的变量或函数只能被本文件访问,其他文件无法访问,并且static修饰的局部变量在函数调用完后不会立即销毁,如:
#include<stdio.h>
void fun();
Void mian()
{
int a;
for(a=0;a<5;a++)
fun();
}
void fun()
{
int i=0;
static int j=0;
printf(“%d%d\n”,i++,j++);
}
输出:
0,0
0,1
0,2
0,3
0,4
5、
头文件stdlib.h在获取随机数之前必须要有随机数种子srand((int)time(NULL)),时间函数保证每次的值都实时更新,故随机数rand()范围0–RAND_MAX,每次调用都会产生不同的随机数
6、
头文件stdlib.h exit()函数通常用来表示程序是否正常终止,正常终止的程序传递值0,exti(0),异常终止的程序传递值非0值,exit(-1),exit函数与return类似
7、
scanf会忽略掉空格和换行符,当输入一个字符串abc[enter],这个语句传送了字符abc’\n’,scanf会输入abc,但把\n留在输入流中,等待读入语句处理。gets和getchar都会读入换行符
8、
struct names right={“Ruthie”,”George”};
Struct names caption = right; //把一个结构初始化为另一个结构
struct book
{
char arr[20];
}library;
void main()
{
library ={“abc”}; //错误,初始化是在定义的时候,定义过了在后面给变量叫赋值
library.arr = “abc”; //这样给字符数组变量赋值错误,arr为不可修改的左值,可以考虑strcpy
}
9、
EOF返回值是-1,在键盘输入ctrl+z表示EOF
10、
枚举
enum+标记名,如enum color这和结构体很像无论枚举的成员是什么类型,都被系统默认为int型,但成员实际是enum color类型,只是值被默认为int
enum color{red,orange,yellow,green,blue,violet};
Printf(“%d %d”,red,violet); //0 5
定义一个变量并赋值
enum color color1=red; //类似于int color1 = 0;
也可以指定给值enum color{red=12,blue=25};
有几个注意点:
(1)枚举里面的所有的值都是enum color类型,不是Int型
(2)声明枚举有两种方式:enum color和enum class color,前者赋值情况:enum color clr = red;后者赋值情况:enum class color clr = color::red(后者必须加作用域限定)
(3)前者可以发生隐式类型转换:int i = red;后者不可以发生隐式类型转换int i = color::red;(报错)