目录
常量
c语言中的常量分为多种:
- const-常属性
const int num = 4; //const-常属性,此时num为const所修饰的常变量
- #define定义的标识符常量
//#define 定义的标识符常量 #define max 10
- 枚举常量
//枚举:一一列举,常用于生活中的:性别(男/女/保密),三原色(红/黄/蓝),星期(1/2/3……) enum Sex { Male, Female, Secret }; //Male,Female,Secret - 枚举常量 int main() { //enum Sex s = Female; printf("%d\n", Male);//值默认为0,printf结果为0 printf("%d\n", Female);//printf结果为1 printf("%d\n", Secret);//printf结果为2 return 0; }
-
字符串
- 有双引号引起的一串字符串为字符串字面值
int main() { char arr1[] = "abc";//将字符串放进一个数组 //“abc”--'a' 'b' 'c' '\0'---'\0'为字符串的结束标志 char arr2[] = { 'a', 'b', 'c',0 };//0为结束符 char arr3[] = { 'a', 'b', 'c'}; //strlen-string length- 计算字符串长度,/0不算做字符串长度,3个字符串长度 printf("%d\n", strlen(arr1)); //15个字符串,证明在15(随机值)个字符串之后才找到/0 printf("%d\n", strlen(arr3)); printf("%s\n", arr1); printf("%s\n", arr2); return 0; }
ASCII编码
数据再计算机上储存的时候通常都是二进制,对于字符#ac$等符号,计算机给出来了一个编码,例如a-97,A-65,这么号码称作ASCII 编码。
转义字符
eg. \ddd例子:/132为8进制代表的那个十进制的数字,作为ASCII码的值,打印对应的字符 1*8^2+3*8^1+2*8^0=64+24+2=90对应ASCII码
int main()
{
printf("%c\n", '\132');
//132为8进制代表的哪个十进制的数字,作为ASCII码的值,打印对应的字符
//132二进制转十进制为90,90对应ASCII码为Z,因此打印出Z
return 0;
}
注释快捷键
选中行:CTRL+K+C注释;CTRL+K+U取消注释
输入注释://后跟注释内容
条件分支
格式为if...else...
int main()
{
int input = 0;
printf("突然励志\n");
printf("你要好好学习吗?(请输入1/0):");
scanf("%d", &input);
if (input == 1)
printf("great future\n");
else
printf("unhappy future\n");
return 0;
}
循环
while循环/for循环/do...while循环
案例:while循环
int main()
{
int line = 0;
printf("走上励志人生\n");
while (line <=200)
{
printf("敲一行代码:%d\n",line);
line++;
}
if (line>=200)
printf("走上人生巅峰\n");
return 0;
}
函数
自定义函数/库函数
#include <stdio.h>
//函数 add为函数名;int为返回函数类型
int add(int x, int y)
{
int z=x + y;
return z;
}
int main()
{
int num1 = 10;
int num2 = 20;
int sum = 0;
int a = 100;
int b = 200;
//sum = num1 + num2;
sum = add(num1, num2);
//sum = a + b;
sum = add(a, b);
printf("sum=&d\n", sum);
return 0;
}
数组
一组相同类型的集合,相应数组索引值从0开始
int main()
{
int arr[5] = { 1, 2, 3, 4, 5 };//定义一个存放十个整型数字的数组
printf("%d\n", arr[3]);//下标的形式访问元素,索引值从0开始,打印4
int i = 0;
while (i < 10)
{
printf("%d\n", arr[i]);
i++;
}
char ch[20];//字符型数组
float arr2[3];//浮点数型数组
return 0;
}
操作符
int main()
{
//(2进制)位操作
//& 按位与
//| 按位或
//^ 按位异或
int a = 3;//二进制011
int b = 5;//二进制101
int c = a&b;
//0与1与的结果为0,因而c对应的结果为001=1(十进制)
int d = a | b;
//0与1或的结果为1,对应的d的二进制为111=7(十进制)
int e = a^b;
//异或^:两个数相异则为1,相同则为0,则e=110=6(十进制)
printf("%d\n", c);
printf("%d\n", d);
printf("%d\n", e);
//移位操作符(2进制)
//<<左移
//>>右移
int a = 1;
//整型1占4个字节-32bit,将字节左移与右移
int b=a << 2;
//b=a的字节向左移两位=1*2^2+0*2^1+0*2^0=4
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
两种加法写法完全等价
int main()
{
int a = 10;
a = a + 10;//1
a += 10;//2
//1,2两种写法完全等价
a = a & 2;
a &= 2;
return 0;
}
单目操作符
原码、反码、补码
只要是整数,内存中储存的都是二进制的补码;
正数的原码、反码、补码相同;
负数:
原码 → 反码 → 补码
直接按照正负 原码的符号位不变 反码+1
写出二进制序列 其他位按位取反得到
eg.
-2:
原码:100000000000000000000000000000010
反码:11111111111111111111111111111111111101
补码:11111111111111111111111111111111111110
int main()
{
int a = 0;//整型4字节32bit:00000000000000000000000000000000
int b = ~a;// b:11111111111111111111111111111111
//~==按(2进制)位取反
//例如1010取反位0101
printf("%d\n", b);
return 0;
}
计算数组元素个数
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6 };//6*4=24各字节
printf("%d\n", sizeof(arr));//计算数组大小,单位为字节
printf("%d\n", sizeof(arr[0]));//计算数组中每个元素的大小
printf("%d\n", sizeof(arr) / sizeof(arr[0]));//计算数组元素个数
return 0;
}
前置++a与后置a++
int main()
{
int a = 10;
int g = 10;
int b = a++;//后置++,先执行b=a=10,再++:a=a++=11
printf("a=%d\n b=%d\n", a, b);
int c = ++g;//前置++,先++,再执行c=g,结果为g=g=11
printf("c=%d\n g=%d\n", c, g);
return 0;
}
static修饰局部变量
static修饰局部变量的生命周期延长,例如循环中 int a=1只适用于第一次a的赋值,第二次进入循环时,a不会再被改变,之前a原酸的甚至会被保留下来
stactic修饰全局变量改变了变量的作用域;全局变量值能够在自己的源文件内部实用的作用域,让静态的全局变量只能够再自己所在的源文件内部使用,出了源文件后无法再使用
static修饰函数改变了函数的链接属性
#define定义常量和宏
//#define max 100//#define 定义标识符常量
//#define定义宏-带参数
//函数的实现
int Max(x, y)
{
if (x > y)
return x;
else
return y;
}
//宏的定义
#define MAX(X,Y) (X>Y?X:Y)
int main()
{
int a = 10;
int b = 20;
int ma = 0;
//函数
int max = Max(a, b);
printf("max=%d\n", max);
//宏的方式
ma = MAX(a, b);
printf("MAX=%d\n",ma);
return 0;
}
指针
图解
int main()
{
int a = 10;//四个字节
int* p=&a;//取地址
printf("%p\n", p);
//有一种变量是用来存放地址的:指针变量
printf("%p\n", &a);
*p = 20;//将20放入a的路径下,也就是将a的值从10改为20
return 0;
}
int main()
{
char ch = 'w';
char* pc = &ch;
*pc = 'a';
printf("%c\n", ch);//结果打印出a
return 0;
}
指针大小:32位4个字节;64位8个字节