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

大致内容

  • 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;
}

 

本节完。

更多推荐

C语言整体框架概述