1.c语言工程文件

  .c表示源文件

  .h表示头文件

2.第一个c语言程序

  stdio.h表示 standard input output的头文件,使用printf 需要include <stdio.h>

# include <stdio.h>

int main()
{
    printf("#####");
    return 9;
}

 

3.C语言的主函数--main函数

C语言是从主函数(main函数)的第一行开始执行的,所以C语言的代码中必须要有main函数---入口

  • 一个工程中可以有多个.c文件
  • 一个工程中main函数有且仅有一个

函数后面必须有(),所以main函数后面要有()

 

3.引用头文件

printf在屏幕上打印信息时,要引用库函数printf,就要引用头文件:stdio.h

#include <stdio.h> 

 

 

4.数据类型

计算机语言来写程序,必须有能力来描述生活中的问题。

数据类型
字符数据类型 char 
短整形 short int
长整形 long int
单精度浮点型 float
双精度浮点型 double
%c打印字符格式的数据;%d打印整形十进制格式的数据
%f打印浮点数字小数; %p以地址的形式打印
%x打印16进制
#include <stdio.h>


int main()
{
// char 字符类型 用单引号
char ch = 'h'; //向内存申请空间,创建char类型的变量
printf("%c\n", ch);
 
// int 整形
int age = 20;
printf("%d\n", age);

// float
float c = 5.0;
printf("%f\n", c);

// double
double pi = 3.14;
printf("%lf\n", pi);

return 0;
}

思考:为什么有short,int,long等不同的数据类型?

  数值的范围不同,减少内存的消耗 存age= 20; 用int age,就有点浪费内存了,可以使用short int age
 
5.内存占用
#include <stdio.h>

int main()
{
printf("%d\n", sizeof(char));// 1 byte ,char这种数据类型向内存申请空间,能够申请多大的内存
printf("%d\n", sizeof(short));// 2 byte
printf("%d\n", sizeof(int)); // 4 byte
printf("%d\n", sizeof(long));// 4、8 byte
printf("%d\n", sizeof(long long));// 8 byte
printf("%d\n", sizeof(float));// 4 byte
printf("%d\n", sizeof(double));// 8 byte
short age = 20;//向内存申请2个字节,16bit位,用来存放20
float weight = 95.5f; //加f是保证是float类型而不是double
 
sizeof 关键字是计算类型或者变量 所占空间的大小,
szeof的单位是字节 byte

计算机中最小的单位:bit 比特位
byte 字节(kb,mb,gb,tb,pb)
计算机是硬件 ---通电后识别电信号,有正电、负电,正电被转化成1,负电被转化成0,
计算机能识别正负电,就能够识别0,1这样的信号(指令)--->0,1这样的二进制位存起来,放在一个bit位中
那么计算机中存0/1的小空间就被称为一个bit位。只能存0或者1----一个bit位只能存放一个二进制位(0或1)
 

一个字节byte==8bit位的大小
 c语言标准规定:sizeof(long)>sizeof(int)就可以
在一些64位计算机中sizeof(long)是8byte,也是满足上面的,所以long可以是4/8byte
 
 
字符串的格式化:
%d--表示整型
%f--表示浮点型float
%lf--表示双精度浮点型double
 

6.变量和常量
6.1 变量
  • 变量的定义方式:数据类型 变量名 = value
  1. int age = 20;
  2. float weight = 75.3f;
  • 变量的分类

  {}里面的是代码块

  1. 局部变量:在{ }定义的就是局部变量
  2. 全局变量:在{ }定义的就是局部变量

      当局部变量和全局变量的自己冲突时(名字一样),局部优先-----(不建议写成一样的)

 
局部变量和全局变量的名字建议不要相同;如果相同,局部变量优先。 

scanf库函数是输入函数

int  main()
{
    int a  = 0;
    int b = 0;
    int sum = 0;
    scanf("%d %d", &a, &b);
    sum = a + b;
    printf("sum=%d\n", sum);
    
    return 0;
}

 
6.2.变量的作用域 生命周期
①作用域
  • 局部变量的作用域是当前代码块;---变量所在的局部范围,{}内,出了{}就不能用了
  • 全局变量的作用域是整个工程
1.c文件中定义的变量int a = 2020;在2.c文件中声明这个变量就可以使用了
声明变量:extern int a;

②生命周期
  • 局部变量的生命周期:从进{}开始到出{}
  • 全局变量的生命周期是整个工程的生命周期
 
 
 6.3 常量
1.常量的分类
  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量
 
 
1⃣️字面常量
如下的1,3.14,就是字面常量,虽然没有实际的使用意义,但是实际存在

 

 

2⃣️常变量---不能被改变,变量具有常属性(不能被改变的属性)(本质是个变量,但是具有了const属性)
int main()
{
  const int a = 10; //常变量,不能被改变
  a = 20;
  printf("a=%d\n", a);
return 0; }

上面编译失败,因为常变量a不能被改变;

 

3⃣️ #define定义的标识符常量
定义的位置无要求
#define MAX 1000 // define 定义的标识符常量,不能被修改

int main()
{
  #define MIN 10
int a. = MAX;
int b = MIN; printf(
"a=%d,b=%d\n", a,b); return 0; }

如果对MAX进行重新赋值,MAX=200,报错,MAX是常量,不能被修改。

 
4⃣️枚举常量--可以一一列举的常量
 
性别,星期等这中能一一列举的;
 
枚举常量不人为赋值,对应的值默认从0开始,上面3个常量对应的值分别是0,1,2, 且不可修改
enum Sex
{
    MALE,
    FEMALE,
    SECRET
};

int main()
{
    enum Sex s = MALE;
    enum Sex f = FEMALE;
    enum Sex t = SECRET;
    printf("s=%d\n", s);
    printf("f=%d\n", f);
    printf("t=%d\n", t);
    return 0;
}

 

定义枚举常量时,赋初值
enum Sex
{
    MALE = 5, // 赋初值
    FEMALE,
    SECRET
};

int main()
{
    enum Sex s = MALE;
    enum Sex f = FEMALE;
    enum Sex t = SECRET;
    printf("s=%d\n", s);
    printf("f=%d\n", f);
    printf("t=%d\n", t);
    return 0;
}

 

 

如果在定义枚举常量之外的地方,修改枚举常量,是error的,不能被修改。