只是简要概述,详细知识点日后会展开论述
大致内容
- c 语言概念
- 第一个C语言程序
- 数据类型
- 变量,常量
- 字符串,转义字符
- 选择语句
- 循环语句
- 函数
- 数组
- 操作符
- 常见关键字
- define 定义常量和宏
- 指针
- 结构体
- 总结
前言
C生万物,C语言是一切编程之本,大部分小白刚开始接触编程时都是从C语言开始学起。
写这篇文章来整体梳理一下C语言的知识框架,以便今后能更系统的学习C语言
一、C语言是什么?
二、第一个C语言程序
这是你写的第一个程序吗?
#include <stdio.h> // 引入头文件
int main() // main函数是主函数的入口*一个文件中只能包含一个main函数*
{
printf("Hello word"); //库函数printf 作用是打印字符
return 0; //返回一个整型值
}
麻雀虽小五脏俱全
三.数据类型
C语言含有很多数据类型,目的是为了我们真正写程序去解决生活中的问题时更加方便。
char //字符数据类型 在内存中占1个字节
int //整型 4
float //单精度浮点型 4
double //双精度浮点型 8
long //长整型 4
long long //更长的整型 8
四. 变量,常量
现实生活中存在很多的变量(年龄,体重,对象...)也有很多的常量(圆周率 性别...)
4.1 定义变量的方法
变量的类型+变量名
int a=100;
double b=12.3;
char name="crj"
4.2 变量的分类
1.全局变量
2.局部变量
#include<stdio.h>
int main()
int a=0; //全局变量
{
int b=1; //局部变量
int a=2;
printf("%d",a); //局部变量和全局变量同名时局部优先
return 0;
}
4.3 变量的使用
#include <stdio.h>
int main()
{
int a=0;
int b=0;
int c=0;
scanf("%d%d",&a,&b); //从键盘上输入两个数分别给a,b
c=a+b;
printf("%d",c);
return 0;
}
4.4 变量的作用域与生命周期
1.所谓作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在所有代码文件中使用,有些变量只能在当前的文件中使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的.局部变量只能在作用在main()函数內部,全局变量作用于整个工程。
#include <stdio.h>
int sum(int m, int n){
int i, sum=0;
//m、n、i、sum 都是局部变量,只能在 sum() 内部使用
for(i=m; i<=n; i++){
sum+=i;
}
return sum;
}
int main(){
int begin = 5, end = 86;
int result = sum(begin, end);
//begin、end、result 也都是局部变量,只能在 main() 内部使用
printf("The sum from %d to %d is %d\n", begin, end, result);
return 0;
}
形参也是局部变量,将实参传递给形参的过程,就是用实参给局部变量赋值的过程,它和a=b; sum=m+n;
这样的赋值没有什么区别。
#include <stdio.h>
//定义三个全局变量,分别表示三个面的面积
int s1 = 0, s2 = 0, s3 = 0;
int vs(int length, int width, int height){
int v; //体积
v = length * width * height;
s1 = length * width;
s2 = width * height;
s3 = length * height;
return v;
}
int main(){
int v = 0;
v = vs(15, 20, 30);
printf("v=%d, s1=%d, s2=%d, s3=%d\n", v, s1, s2, s3);
v = vs(5, 17, 8);
printf("v=%d, s1=%d, s2=%d, s3=%d\n", v, s1, s2, s3);
return 0;
}
2.生命周期
1.局部变量的作生命周期:进作用域开始出作用域结束
2.全局变量的生命周期: 整个程序的生命周期
4.5 常量
1.字面常量
2.const修饰常变量
3.#define定义的标识符常量
4.枚举常量
include <stdio.h>
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
//字面常量演示
3.14;//字面常量
1000;//字面常量
//const 修饰的常变量
const float pai = 3.14f; //这里的pai是const修饰的常变量
pai = 5.14;//是不能直接修改的!
//#define的标识符常量 演示
#define MAX 100
printf("max = %d\n", MAX);
//枚举常量演示
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
//注:枚举常量的默认是从0开始,依次向下递增1的
五.字符串+转义字符
“hello word" 像这样由双引号引起来的一串字符就叫做字符串。
字符串的结束标志是"\0"但是计算字符串长度是不计入。
int main()
{
char arr1[] = "hello"; // 默认含有/0
char arr2[] = {'h','e','l','l','0','\0'}; // /0字符串结束标志
char arr3[] = { 'h','e','l','l','0' }; // 无/0 打印的时候等打印到/0为止 有乱码出现
printf(" % s\n", arr1);
printf(" % s\n", arr2);
printf(" % s\n", arr3);
return 0;
}
转义字符
六.选择语句
#include<stdio.h>
int main()
{
int coding = 0;
printf("keep coding and you will success\n-->选择0/1");
scanf("%d", &coding);
if (1 == coding)
printf("believe yourself and keep coding ");
else
printf("You are a loser ");
return 0;
}
七.循环语句
#include<stdio.h>
int main()
{
printf("开始学习编程");
int line =0;
while (line < 20000)
{
printf("keep coding\n");
line++;
}
if (1999< line)
printf("good offer");
else
printf("滚去敲代码");
return 0;
}
八.函数
#include<stdio.h>
int main()
{
int a=0;
int b=0;
int c=a+b;
printf("%d",c);//不引入函数求a+b的值
return 0;
}
#include<stdio.h>
int Add(int x,int y) //x,y称为形式参数 用来接收实参
{
int z=x+y; //返回值
return z;
}
int main()
{
int a=0;
int b=0;
int c=Add(a,b);//a,b称为实参
printf("%d",c);//引入函数求a+b的值
return 0;
}
九.数组
9.1 数组的定义
C语言规定数组的下标是从零开始的
int arr[10]={0}
int arr[10] | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
下表 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
9.2 数组的使用
int main()
{
int arr[10] = { 0 };
for (int i = 0; i < 10; i++)
scanf("%d", &arr[i]);
for (int i= 0; i< 10;i++)
printf("%d", arr[i]);
return 0;
}
十.操作符
c
十一. 常见关键字
十二.#define定义常量和宏
#define MAX 1000 //#define 定义标识符常量
// define 定义宏
#define ADD(x,y)((x)+(y))
#include<stdio.h>
int main()
{
int c=ADD(23,56);
int a=MAX*ADD(3,2);
printf("%d %d",c,a);
return0;
}
13.指针
1.内存
为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
内存 | 地址 |
1byte | 0xFFFFFFFF |
1byte | 0xFFFFFFFE |
1byte | |
1byte | 0X0000002 |
1byte | 0X0000003 |
1byte |
#include<stdio.h>
int main()
{
int a=0; //变量是在内存中创建的,每个内存单元都有地址,所以每个变量也都有地址
&a; //取变量a的地址
printf("%p",&a); //打印变量a的地址
return 0;
}
#include<stdio.h>
int main()
{
int a=2;
int *p=&a; //定义指针变量,用来存放变量a的地址
*p=1; //解引用操作
printf("%d",a);
return 0;
}
2.指针变量的大小
//指针变量的大小取决于地址的大小
//32位平台地址是32个比特位即4个字节
//64位平台地址是64个比特位即8个字节
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(double*));
printf("%d\n", sizeof(float*));
return 0;
}
14.结构体
#include <stdio.h>
int main(){
struct{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
} stu1;
//给结构体成员赋值
stu1.name = "Tom";
stu1.num = 12;
stu1.age = 18;
stu1.group = 'A';
stu1.score = 136.5;
//读取结构体成员的值
printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
return 0;
}
本节完。
更多推荐
C语言整体框架概述
发布评论