目录
变量
- 变量 ------> 一块内存的代号,每一个变量对应一块内存
内存有多大
内存存放什么类型的数据
- C语言中使用变量的名字,能访问名字代号对应的内存,减少了开发难度
- 定义变量语句 ------> 变量类型 变量名字[=初始化数据] ------> 每一条语句都以分号结尾
- 定义一个变量,同时分配一块内存 ------> 内存的名字就是变量的名字
局部变量
- 变量定义在函数的内部
- 变量只能在函数内部使用,函数调用结束后,变量就被收回 ------> 在return前就被收回了
解析:当你返回局部变量时,是return拷贝了里面的值,没有错 ------> 返回地址就错了,因为被销毁了
函数参数变量
- 变量作为参数定义在函数里,和局部变量一样参数变量在函数结束后也被收回
int add_func(int a,int b) {
return a+b;
}
基本变量类型关键字
有符号整数
- 1个字节 ------> char 变量名字,范围[-128,127]
- 2个字节 ------> short 变量名字,范围[-2^15, 2^15 - 1]
- 4个字节 ------> int 变量名字,范围[-2^31, 2^31 - 1]
- 8个字节 ------> long long 变量名字,范围[-2^63, 2^63 - 1] ------> GNU 编译器
- 8个字节 ------> __int64 变量名字,范围[-2^63, 2^63 - 1] ------> VC 编译器
无符号整数
- 1个字节 ------> unsigned char 变量名字,范围[0,255]
- 2个字节 ------> unsigned short 变量名字,范围[0,2^16 - 1]
- 4个字节 ------> unsigned int 变量名字,范围[0, 2^32 - 1]
- 8个字节 ------> unsigned long long 变量名字,范围[0, 2^64 - 1] ------> GNU 编译器
- 8个字节 ------> unsigned __int64 变量名字,范围[0,2^64 - 1] ------> VC 编译器
小数
- 4个字节 ------> float 变量名字
- 8个字节 ------> double 变量名字
定义函数局部变量
- 返回值 函数名字(参数1, 参数2) {
代码语句1;
代码语句2;
....
定义变量语句; 类型 变量名字;
}
- return语句 ------> return 值,如果没有返回值,就是void
- 使用返回值 ------> 直接使用/变量保存返回值再使用
基本表达式
- 变量 = 同类变量/常数值/同类的函数返回值
- +, - * / ------> 变量与变量,变量与常数
- 括号 ------> 改变运算的优先级,括号有限
- ++,-- ------> ++在后面: 先参与计算,计算完成后再 + 1
++在前面: 先+1后再参与表达式计算
- += -= ------> 简洁美
练习代码:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
// int 返回值 函数名称, 输入的参数1, 输入的参数2
int add_int(int lhs, int rhs) {
int temp; // 定义在函数内的变量,局部变量;
// 函数返回了以后,参数的变量也会被回收,
return (lhs + rhs); // return之前会销毁这个变量所对应的内存;
}
// 函数结构: y = f(x) --> y 关于x的函数 f是对应法则 y = ax + b;
// 参数,函数名字,返回值;
// 【返回值的类型】 函数名字(参数1, 参数2) {
// }
// 函数返回值要和函数定义的返回类型是一致的;
int main(int argc, char** argv) {
// 定义一个变量:
// (1)分配了4个字节大小的内存,
// (2)C语言里面使用这个变量的名字,能够访问这个内存;
// (3)这个变量的内存,存放的是int类型的整数;
int value = 0; // 赋值,给变量对应的内存写上一个数据值;
// 赋值语句,往内存里面存数据
// 把这个value这块内存存放上整形的数据7;
value = 7;
// 使用名字,访问内存数据
printf("%d\n", value); // 读出的是变量名字--》内存--》存放的数据;
// 定义了一个lhs的变量-->分配了内存(4个字节的)
// 访问value变量的值-->存到lhs里面;
// 变量的赋值,一定要是同类型,或者可以强制转换的类型;
int lhs = value;
printf("%d\n", lhs);
// lhs --> 7
int rhs = 3;
printf("%d\n", lhs + rhs); // --> 10
printf("%d\n", lhs - rhs); // --> 4
printf("%d\n", lhs * rhs); // --> 21
printf("%d\n", lhs / rhs); // 7 / 3 = 2; // 除不尽的向下取整
value = ((lhs + rhs) * lhs) + 7; // 括号能够改变我们的算术的优先级别
printf("value = %d\n", value);
// end
int a = 3; // 定义了4个字节的变量, 赋值为3;
a += 1; // a = a + 1; // 简洁美
// a = a + value; //
a += value; // --> a = a + value;
// 加减乘除
a = 3;
a *= 4; // a = a * 4;
printf("a = %d\n", a);
// ++, --
a++; // a = a + 1;
++a; // a = a + 1;
// ? 区别是什么,单个是看不出区别的,只有在表达式里面使用;
// 在前面的,是先++再参与表达式计算,在后面的是先参加表达式计算,再++;
a = 3;
printf("%d\n", (a ++) * 4); // --> 3 * 4 = 12 a ++ ; a = 4;
printf("%d\n", (a) * 4);
a++;
a = 3;
printf("%d\n", (++a) * 4); // --> 3 * 4 = 12 a ++ ; a = 4;
a = a + 1;
printf("%d\n", (a)* 4);
a = add_int(3, 4) * 6;
printf("%d\n", a);
system("pause");
return 0;
}