选择语句
"如果你好好学习,毕业后就能找到好工作,如果你不好好学习,毕业后·就会就种地(家里有况另算)"这就是一种选择
if(判断条件){ 语句块1 }else{ 语句块2 }
#include<stdio.h> int main() { int code = 0; printf("你会好好学习嘛?(1or0):"); scanf("%d", &code); if (code == 1) { printf("毕业后你会得到好offer\n"); } else { printf("毕业后回家种地\n"); } return 0; }
循环语句
有些事情需要日复一日的去做,比如你想要找到好工作,就要坚持每天去敲代码,假如当你敲到50000行代码时就可以找到好offer了,没到这之前你需要每天都坚持敲,直到到了就可以结束循环了.
C语言中通如何实现循环囊?
- while语句
- for语句
- do...while语句
这里大家只需要知道就行,后期详细讲.
#include<stdio.h> int main() { printf("找到好offer\n"); int line = 0; while (line <= 20000) { line++; printf("我要继续努力敲代码\n"); } if (line > 20000) printf("赢取白富美\n"); return 0; }
函数
函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。
函数可以提前保存起来,并给它起一个独一无二的名字,只要知道它的名字就能使用这段代码。函数还可以接收数据,并根据数据的不同做出不同的操作,最后再把处理结果反馈给我们。
#include <stdio.h> int Add(int x, int y) { int z = x + y; return z; } int main() { int num1 = 0; int num2 = 0; int sum = 0; printf("输入两个操作数:>"); //输入 scanf("%d %d", &num1, &num2); //sum=num1+num2; sum = Add(num1, num2); //例如:盘子=李四(20,蛋炒饭) //输出 printf("sum = %d\,", sum); return 0; }
数组
要存储1-10的数字,怎么存储?
C语言中给了数组的定义:一组相同类型元素的集合数组定义
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
数组的使用
#include <stdio.h> int main() { int i = 0; int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; for (i = 0; i < 10; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
操作符
简单的介绍下,后面详细讲;
算术操作符
+ - * / %
移位操作符
>> <<
位操作符
& ^ |
赋值操作符
= += -= *= /= &= ^= |= >>= <<=
单目操作符
!: 逻辑反操作
—: 负值
+ : 正值
& : 取地址
sizeof: 操作数的类型长度
~ : 对一个数的二进制按位取反
-- : 前置--,后置--
++ : 前置++,后置++
* : 间接访问操作符(解引用操作符)
关系操作符
>
>=
<
<=
!=
==
逻辑操作符
&& 逻辑与
|| 逻辑或
条件操作符
exp1?exp2:exp3
下标引用,函数调用和结构成员
【】() . ->
常见关键字
auto :声明自动变量
short :声明短整型变量或函数
int: 声明整型变量或函数
long :声明长整型变量或函数
float:声明浮点型变量或函数
double :声明双精度变量或函数
char :声明字符型变量或函数
struct:声明结构体变量或函数
union:声明共用数据类型
enum :声明枚举类型
typedef:用以给数据类型取别名
const :声明只读变量
unsigned:声明无符号类型变量或函数
signed:声明有符号类型变量或函数
extern:声明变量是在其他文件正声明
register:声明寄存器变量
static :声明静态变量
volatile:说明变量在程序执行中可被隐含地改变
void :声明函数无返回值或无参数,声明无类型指针
if:条件语句
else :条件语句否定分支(与 if 连用)
switch :用于开关语句 case:开关语句分支
for:一种循环语句
do :循环语句的循环体
while :循环语句的循环条件
goto:无条件跳转语句
continue:结束当前循环,开始下一轮循环
break:跳出当前循环
default:开关语句中的“其他”分支
sizeof:计算数据类型长度
return :子程序返回语句(可以带参数,也可不带参数)循环条件
关键字typedef
typedef顾名思义是类型定义,这里应该理解为类型重命名
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名 typedef unsigned int uint_32; int main() { //观察num1和num2,这两个变量的类型是一样的 unsigned int num1 = 0; uint_32 num2 = 0; return 0; }
关键字register
寄存器是存储空间,在电脑上一般是集成到CPU上的所和内存是不同的独立存储空间
可以放在寄存器中,运行速度快,但是寄存器容纳空间小,最后变量存到哪还得看编译器如何决定
#include<stdio.h> int main() { register int num = 100; //# //error printf("%d", num); return 0; }
关键字static
在C语言中:
static是用来修饰变量和函数的
1.修饰局部变量—静态局部变量
2.修饰全局变量—静态全局变量
3.修饰函数 静态函数
static修饰局部变量:
改变了变量的生命周期,不影响作用域
#include<stdio.h> 试分析test1和test2的区别 void test1() { int a = 1; a++; printf("%d ", a); } void test2() { static int a = 1; a++; printf("%d ", a); } int main() { int i = 0; while (i < 10) { test1(); i++; } printf("\n"); int j = 0; while (j < 10) { test2(); j++; } return 0; }
默认一个全局变量是具有[外部]链接属性的而如果全局变量被static修饰,是的全局变量的外部链接属性变成了内部链接属性,这个时候这个全局变量只能在本源文件内部使用其他源文件无法链接到,也无法使用!!!
#define 定义常量和宏
define定义常量 #define MUM 100 //define定义宏 #define MAX(x,y) (x>y?x:y) int main() { int a = 10, b = 20; int c = MAX(a, b);//宏定义,把它替换成c=(a>b?a:b) printf("%d\n", c); return 0; }
注:#define和typedef的区别?
#define INT1 int * typedef int * INT2; INT1 a1, b1; INT2 a2, b2; b1 = &m; b2 = &n;
因为 INT1 a1, b1; 被宏代换后为: int * a1, b1;即定义的是一个指向int型变量的指针 a1 和一个int型的变量b1.而INT2 a2, b2;表示定义的是两个变量a2和b2,这两个变量的类型都是INT2的,也就是int *的,所以两个都是指向int型变量的指针。
所以两者区别在于,宏定义只是简单的字符串代换,在预处理阶段完成。而typede不是简单的字符串代换,而是可以用来做类型说明符的重命名的,类型的别名可以具有类型定义说明的功能,在编译阶段完成的。
指针
内存
内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
变量都有地址,取出变量地址如下:
int main() { int num = 10;//向内存申请4个字节空间,里面存放10 //sizeof(int)==4 printf("%p\n", &num);//打印地址;&取地址操作符 return 0; }
那地址如何存储,需要定义指针变量
指针使用的实例
int main() { int num = 10;//向内存申请4个字节空间,里面存放10 //sizeof(int)==4 //pa=# pa是一个存放地址的变量,这样的变量成为指针变量 int* pa = # printf("%p\n", &num);//打印地址;&_取地址操作符 *pa = 20;//解引用操作符,会修改num的值 printf("%d\n", num);//20 return 0; }
指针变量的大小
int main() { printf("%d\n", sizeof(char*)); printf("%d\n", sizeof(short*)); printf("%d\n", sizeof(int*)); printf("%d\n", sizeof(double*)); return 0; }
结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
这里只能使用结构体来描述了。
例如:
struct Stu { char name[20];//名字 int age; //年龄 char sex[5]; //性别 char id[15]; //学号 };
结构体的初始化:
//打印结构体信息 struct Stu s = {"张三", 20, "男", "20180101"}; //.为结构成员访问操作符 printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id); //->操作符 struct Stu *ps = &s; printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps- >id);
相信经过阅读本篇博客,对C语言有了初步的了解,知道了C语言的大概语法;这样今天的目的就达到啦,后面我们会对其进行详细讲解,大家记得关注哦,最后再三赞支持一波,爱你们