字符串是双引号括起来的一串字符,如”sdas“
字符串在结尾处隐藏了一个\0,字符串的结束标志是\0这个转义字符。\0在计算字符串长度时不算做字符串内容
数组为一组相同类型的元素
字符串-%s
字符-%c
---------------------
strlen()求字符串长度,需要的头文件为#include<string.h>
-----------
转义字符:\ddd,ddd表示1-3个八进制数字,如:\130,x
\xdd,dd表示2个十六进制数字,如:\30,0
------------
函数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int ADD (int x,int y)
{
int c = x + y;
return c;
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int d=ADD(a, b);
printf("%d", d);
return 0;
}
------------
数组
一组相同类型元素的集合:如int arr[4]={1,2,3,4]
chae ch[4]={'a','b'} (不完全初始化,剩余的默认为0)
数组使用下标来访问,每个元素都有下标,第一个元素的下标为0
------------------------------
操作符:
算术操作符:+,-,*,/,%(取模,即取余数)
int a=9\2 ----a=4
float a=9\2-----a=4
float a=9\2.0-----a=4.5
位移操作符:<<,>>(移动的是二进制位)
位操作符:
& 按位与
| 按位或
^ 按位异或
赋值符:=,即上述操作符与=的复合赋值符
例:a = a + 3即为a +=3;
a = a % 3即为a % = 3
单目操作符:
!:逻辑反操作(C语言中,0为假,其他为真。!可以将真变为假,假变为真)
sizeof : 计算类型或者变量大小,当其求类型大小时括号不能省略,求变量大小时可省略
int arr[10] ={0};
printf("%d\n",sizeof(arr));
计算的是数组的总大小,单位是字节,输出结果为40(10*4)
int arr[10] ={0};
printf("%d\n",sizeof(arr[0]);
输出结果为4
int sz = sizeof(arr)/sizeof(arr[0]);
输出sz的结果为10,此为数组元素个数
~ 按(二进制)位取反:把所有二进制位中的数字,1变成0,0变成1
整数a=0
二进制:00000000000000000000000000000000
~a:1111111111111111111111111111111111
整数在内存中存储的是补码,一个整数的二进制表示有三种:原码,反码,补码
如-1:10000000000000000000000000000001(首位数字为符号位)(原码)
11111111111111111111111111111110(反码)(符号位不变,其他位按位取反)
11111111111111111111111111111111(补码)(反码二进制数加1)
上述为负数的计算方式
正整数:原码,反码,补码相同
前置后置--相似
逻辑操作符:
&& 逻辑与
同为真即为真,一为假即为假
|| 逻辑或
一为真,即为真。两为假,才为假
条件操作符
?: : 如exp1 ? exp2 :exp3
exp1 成立,exp2计算,整个表达式的结果是:exp2的结果
exp1 不成立,exp3计算,整个表达式的结果是:exp3的结果
逗号表达式以逗号隔开,从左至右依次计算,整个表达式的结果是最后一个表达式的结果
下标引用操作符【】
函数调用操作符()
变量名不能是关键字,关键字是C语言提供的,不能自己创建关键字
auto :声明自动变量
break:跳出当前循环
case:开关语句分支
char :声明字符型变量或函数返回值类型
const :声明只读变量
continue:结束当前循环,开始下一轮循环
default:开关语句中的“默认”分支
do :循环语句的循环体
double :声明双精度浮点型变量或函数返回值类型
else :条件语句否定分支(与 if 连用)
enum :声明枚举类型
extern:声明变量或函数是在其它文件或本文件的其他位置定义
float:声明浮点型变量或函数返回值类型
for:一种循环语句
goto:无条件跳转语句
if:条件语句
int: 声明整型变量或函数
long :声明长整型变量或函数返回值类型
register:声明寄存器变量
return :子程序返回语句(可以带参数,也可不带参数)
short :声明短整型变量或函数
signed:声明有符号类型变量或函数
sizeof:计算数据类型或变量长度(即所占字节数)
static :声明静态变量
struct:声明结构体类型
switch :用于开关语句
typedef:用以给数据类型取别名
unsigned:声明无符号类型变量或函数
union:声明共用体类型
void :声明函数无返回值或无参数,声明无类型指针
volatile:说明变量在程序执行中可被隐含地改变
while :循环语句的循环条件
typedef:类型重命名
#include<stdio.h>
typedef unsigned int u_int;
int main()
{
unsigned int a = 100;
u_int b = 100;
return 0;
}
unsigned int 被重命名为u_int ,即u_int也是一个类型名
static-静态的:修饰局部变量,改变局部变量的生命周期(本质上是改变了变量的存储类型);
修饰全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部使用,其他源文件不能使用;(全局变量之所以在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,在其他源文件就不能链接到这个静态的全局变量了)
修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用(和static修饰全局变量一样)
define 和include不是关键字,是预处理指令