1.引入标准库
#include <stdio.h>
函数的入口和返回值
int main ()
{
Printf(“hello”);
return 0;
}
1byte = 8 Bit
1kb = 1024 byte
1mb = 1024 kb
1gb = 1024 mb
1tb = 1024 gb
2. 数据类型
int char double long longlong float short
sizeof() 返回数据类型的字节。
常量
const int a = 100; 本质上还是变量,只是被const修饰下,变为常属性
# define Max 10000 常量标识 不能修改
枚举
枚举类型是常量
enum Sex
{
MALE,
SEX,
SECRET
};
3. 字符串
单引号'a' 是一个字符串,双引号 "abcd" 是一串字符串。
字符串最后的结尾是 \0. !非常重要
Strlen()求字符串长度 但是需要在头部写入 # include <string.h>
char arr1[] = { 'a','b','c'};不给末尾加 \0 Strlen打印为随机值,
char arr1[] = { 'a','b','c',’\0’};打印正确数量 3.
也就是必须加入 \0 字符串结束符,但是不算符号内容求字符串长度时不计算进去。
4. 数组的学习
数组:相同元素类型的集合
**int intArr[10] = {1,2,3,4,5,6,7,8,9,10};** **完全初始化******
**Char[5] = {‘a’,’b’,’c’};** **不完全初始化,剩余的填充** **0**
int arr[10] = { 1,2,3,4,5 };
int i = 0;
while (i <= 4)
{
printf("%d \n",arr[i]);
i++;
}
5. 操作符
算数操作符 + - * /
Float I = 9 / 2.0;
注意除号两端有一个是小数就是小数除法,如果都是整数就是整数除法,不会得到小数。
移位操作符 移动的是二进制 >> <<
位操作符 & | ^
赋值操作符 = += -= *= /= &= ^= |= >>= <<=
单目操作符
Sizeof 是个操作符 不是函数
!逻辑反操作
( - 负值 ) ( + 正值 )
& 取地址
( * 间接访问操作符(解引用操作符))
sizeof操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置 后置 -- ++ 前置 后置++
(类型)强制类型转换。例 int a = (int)3.14;
int arr[10] = { 0 };
printf("%d", sizeof(arr)); 这里计算的数组的总大小 单位是 byte .一个int 4个byte.
整数在内存中存储的是补码。
一个整数的二进制表示有三种:原码 反码 补码
负数计算: -1
10000000 00000000 00000000 00000001(原码)
11111111 11111111 11111111 11111110(反码)
11111111 11111111 11111111 11111111(补码)
正整数 原码 反码 补码 相同。
关系操作符 > >= < <= != ==
逻辑操作符 && 逻辑与 || 逻辑或
条件操作符(三目操作符) Exp1 ?exp2 :exp3
逗号表达式:逗号隔开的一串表达式。
int a = 10;
int b = 10;
int c = 6;
int d = 9;
int sum = (a + b, c + d);
printf("%d", sum);
逗号表达式是从左向右依次计算的,最后得到的是最后一个表达式的结果.
下标引用 函数调用和结构成员
【】 () . ->
6. 常见关键字
Define 不是关键字 预处理指令
Include不是关键字 预处理指令
7. 定义常量和宏
Define 是预处理指令
1. Define 定义符号 # define MAX 1000
2. Define 定义宏 宏是有参数的 但它不是一个整体 ,如果写成一个整体是((x)+(y))
# define ADD(x,y) x+y
7. 指针
指针就是地址
内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的。
一个内存单元是一个byte然后分配地址
int a = 10; int 占4个 byte
每个字节都会分配地址但是 &a 取地址符号只会拿出他的第一个地址。
%p 专门用来打印地址
int a = 10;
int * pa = &a;// 说明pa是指针变量 int 说明pa 执行的对象是 int 类型
*pa = 20; // * 解引用操作 *pa 就是通过pa里面的地址,找到a
printf("%d", a);// 20
指针变量的大小
printf("%d \n", sizeof(char*));
printf("%d \n", sizeof(int*));
printf("%d \n", sizeof(short*));
printf("%d \n", sizeof(long*));
printf("%d \n", sizeof(long long*));
指针大小是相同的!为什么?
指针是用来存储地址的! 指针需要多大空间,取决与地址的存储需要多大空间。
32位 32bit – 4byte
64位 64bit – 8byte
8. 结构体
结构体可以让c语言创建新的类型。
struct Sua
{
char name[20];
int age;
char sex[10];
};
struct Sua s = { "张三",20 ,"男"};
printf("1: %s %d %s \n", s.name, s.age,s.sex);//1 张三 20 男
struct Sua* pa = &s; // 取地址 struct 类型
printf("2: %s %d %s \n", (*pa).name, (*pa).age, (*pa).sex);//2 张三 20 男
printf("3 : %s %d %s \n", pa->name, pa->age, pa->sex);//3 张三 20 男