admin管理员组

文章数量:1794759

C语言整体框架概述

C语言整体框架概述

只是简要概述,详细知识点日后会展开论述

大致内容
  • 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]12345678910
下表012345678

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个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

内存

地址
1byte0xFFFFFFFF
1byte0xFFFFFFFE
1byte
1byte0X0000002
1byte0X0000003
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; }

 

本节完。

本文标签: 框架语言