sizeof() --参数为变量或类型,计算变量或类型的字节大小
a==b?c:d --三目运算符,a==b时,返回c,否则返回d
算术运算符:+,-,*,/,%
自加、自减运算:++,--
位运算:
~ --取反,正数取反为 -(n+1) ,负数取反为 n-1
& --与,两个同为1才为1,否则为0
| --或,两个同为0才为0,否则为1
^ --异或,两个相同为0,两个不同为1
<<n --左移n位,等于原数乘以2的n次方
>>n --右移n位,等于原数除以2的n次方
&[变量] --取变量的开始地址
*[地址] --取地址对应的变量值
%p --printf中用来输出地址格式的变量
如果输入缓冲区有垃圾数据,可用下面方式取走:
if(scanf("%d",&data)==0)//读取失败返回0
{
scanf("%*[^\n]");//读取掉\n之前的所有字符
scanf("%*c");//读取掉\n
}
控制台程序屏幕输出字符的条件:
1、遇到\n
2、程序结束
3、输出缓冲区满(4K)
4、人工刷新fflush(stdout)
数组元素初始化:
int a[5]={1,2} --第1,2个值为1,2,其他值为0
int a[5]{[3]=10,[4]=20}; --下标为3,4的值设置为10,20,其他为0
int a[10][10]={{0}}; --定义并将二维数据里值全部设置为0
屏幕显示颜色设置:\033[显示方式;前景色;背景色m
默认设置为:\033[0m
数学函数头文件(编译时,可能要加 -lm 选项):
math.h
sqrt()--平方根
pow() --n次方
生成随机数:
#include<time.h>
#include<stdlib.h>
srand(time(0));
int data=rand()%100;--生成100以内的随机数
指针基本操作:
int a=10;
int *pa=&a;//pa取a的地址
int b=*pa;//b取pa地址上的值,b的值变为10
int arr[10]={1,2,3};//不可使用*arr++来取值,因为arr是地址常量,不可变
int *p=&arr[0];//或int *p=arr; //取数组首地址也就是数组第一个元素的地址,可用*p++循环数组,也可用*(p+i)来取第i个元素的值。
控制台基本输入输出:
char name[20]={0};
fgets(name,20,stdin);//获取输入的最多20个字符
//scanf("%s",name);//获取输入字符,但不能读取空格
char *s="abcdef";
printf("%s",s);//这里要传入的不是值(*s),而是字符数组首地址(s)
字符串(字符数组)操作函数:#include<string.h>
复制:char * strcpy(char* dest,char* src);//返回desc的地址
追加:char * strcat(char* dest,char* src);
长度:strlen(char * str);//返回字符串长度,不包括'\0'
比较:strcmp(cahr * s1,char * s2);//相等返回0,s1>s2返回正数,否则返回负数
入口函数参数及数据:
int main(int argc,char* argv[]);//argc为参数个数,agrv为各参数值,类型为数组。