01.初始C语言

01.初始c语言

基本介绍c语言的基础知识 ,这里只对知识点做一个简单的介绍,具体的讲解以后会逐章更新。

本章重点:

  • 什么是c语言
  • 第一个c语言程序
  • 数据类型
  • 变量与常量
  • 字符串、转义字符与注释
  • 选择语句
  • 循环语句
  • 函数
  • 数组
  • 操作符
  • 常见关键字
  • define定义常量和宏
  • 指针
  • 结构体

以下开始正文:

1. 什么是c语言

c语言是一门通用的计算机编程语言,广泛用于底层开发。c语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码、以及不需要任何运行环境支持就可以运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器)。

c语言是一门面向过程的计算机程序语言,与C++,Java等面向对象的编程语言有所不同。

2. 第一个c语言程序

js 复制代码
#include <stdio.h>

int main() 
{ 
    printf("hello world\n"); 
    return 0; 

}
//解释: //main函数是程序的入口 
//一个工程中main函数有且仅有一个

3. 数据类型

js 复制代码
char       //字符型数据类型
short      //短整型
int        //整形
long       //长整型
long long  //更长的长整型
float      //单精度浮点数
double     //双精度浮点数

那么每种类型的大小是多少呢?

js 复制代码
#include <stdio.h>
int main() 
{ 
    printf("%d\n", sizeof(char)); 
    printf("%d\n", sizeof(short)); 
    printf("%d\n", sizeof(int)); 
    printf("%d\n", sizeof(long)); 
    printf("%d\n", sizeof(long long)); 
    printf("%d\n", sizeof(float)); 
    printf("%d\n", sizeof(double)); 
    printf("%d\n", sizeof(long double));
    return 0; }

(1字节等于8比特)

类型的使用:

js 复制代码
int age = 150;
float weight = 45.5f;
char ch = 'w';

存在这么多的类型的目的,是为了更丰富的表达实际生活中的各种数值。

4. 变量、常量

在实践生活中,有些值是不变的,而另一些值则是可变的;

在c语言中,可变的值用变量的概念表示,而不可变的值则是常量;

4.1 定义变量的方法

js 复制代码
int salary = 20000;
int weight = 120;
char ch = 'w';

4.2 变量的分类

  • 局部变量
  • 全局变量
js 复制代码
#include <stdio.h>

int global = 2019;//全局变量 

int main() 
{ 
    int local = 2018;//局部变量 
    //下面定义的global会不会有问题? 
    int global = 2020;//局部变量 
    printf("global = %d\n", global); 
    return 0; 
 }

当局部变量与全局变量同名时,局部变量优先使用。

4.3 变量的使用

js 复制代码
#include <stdio.h>
int main() 
{ 
    int num1 = 0; 
    int num2 = 0; 
    int sum = 0; 
    printf("输入两个操作数:>"); 
    scanf("%d %d", &num1, &num2); 
    sum = num1 + num2; 
    printf("sum = %d\n", sum); 
    return 0; 
 } 
 //这里介绍一下输入,输出语句 
 //scanf 
 //printf
 

4.4 变量的作用域与生命周期

作用域:作用域是程序设计概念,一段程序代码中所用到的名字并不总是有效的。而限定这个名字可用性的代码范围就是这个名字的作用域。

  1. 局部变量的作用域是变量所在的局部范围。
  2. 局部变量的作用域是整个工程。

生命周期:变量的生命周期指的是变量的创建到销毁之间的一个时间段。

  1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  2. 全局变量的生命周期是:整个程序的生命周期。

4.5 常量

c语言中常量和变量的定义的形式有所差异。

c语言中常量的定义分为以下几种:

  1. 字面常量
  2. const修饰的常变量
  3. #define定义的标识符常量
  4. 枚举常量
js、 复制代码
#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的 
     return 0; 
  }

上面例子上的 pai 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了 变量pai不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量。

5.字符串、转义字符与注释

5.1 字符串

js 复制代码
"hello world.\n"

这种由双引号引起来的一串字符称为字符串字面值,即字符串。

注:字符串的结束标志是一个\0的转义字符,在计算字符串长度的时候\0是结束标志,不算做字符串内容。

js 复制代码

5.2 转义字符

(具体说明见一下图)

6. 注释

1.代码中有些不需要的代码可以直接删除,也可以注释掉。

2.代码中有些部分为了更好地理解以及防止日后自己遗忘掉,可以加上相关的说明。

注意:注释不能嵌套注释。

7. 选择语句

js 复制代码
#include <stdio.h>
int main() 
{ 
    int coding = 0; 
    printf("你会去敲代码吗?(选择1 or 0):>"); 
    scanf("%d", &coding); 
    if(coding == 1)   
    { 
        printf("坚持,你会有好offer\n");   
    } 
    else   
    { 
        printf("放弃,回家吧\n");   
     }
     
     return 0; 
     
 }
 

8. 循环语句

C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。

9. 函数

js 复制代码
#include <stdio.h>
int main() 
{ 
    int num1 = 0; 
    int num2 = 0; 
    int sum = 0; 
    printf("输入两个操作数:>"); 
    scanf("%d %d", &num1, &num2); 
    sum = num1 + num2; 
    printf("sum = %d\n", sum); 
    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 = Add(num1, num2); 
     printf("sum = %d\n", sum); 
     return 0; 
 }

10. 数组

数组:一组相同类型的元素的集合。

10.1 数组的定义

js 复制代码
int arr[10] = {1,2,3,4,5,6,7,8,9,10}; //定义一个整形数组,存放十个数字。

10.2 数组的下标

在c语言中,数组的每一个元素都有下标,而下标是从0开始的,数组可以通过小标进行访问。

10.3 数组的使用举例。

js 复制代码
#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; 
 }

11. 操作符

c语言中操作符主要分为:

  1. 算数运算符
  2. 逻辑运算符
  3. 关系运算符
  4. 位运算符
  5. 赋值运算符
  6. 杂项运算符

具体说明留到以后。

12. 常见关键字

这里的关键字都是c语言本身设定好的,用户是不能自己创造关键字的。

13. #define定义常量和宏

js 复制代码
//define定义标识符常量 
#define MAX 1000 

//define定义宏 
#define ADD(x, y) ((x)+(y)) 

#include <stdio.h>

int main() 
{ 
    int sum = ADD(2, 3); 
    printf("sum = %d\n", sum); 
    sum = 10*ADD(2, 3); 
    printf("sum = %d\n", sum);  
    return 0;   
}

14. 指针

14.1 内存

内存是计算机中特别重要的存储器,计算机中程序的运行都是在内存中进行的。

为了更有效的运用内存,将内存划分为一个个小小的内存单元,每一个内存单元的大小是一个字节。

为了能更有效的访问到每一个内存单元,于是对内存单元进行编号,而这些编号就被称为内存单元的地址。

变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所有变量也是有地址的,取变量地址的操作如下:

js 复制代码
#include <stdio.h>
int main() 
{ 
    int num = 10; 
    &num;//取出num的地址 
    //注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址) 
    printf("%p\n", &num);
    //打印地址,%p是以地址的形式打印 
    return 0;
 }

那么对应的地址如何存储,就需要对指针变量进行定义。

js 复制代码
int num = 10;
int *p;
p = &num;

14.2 指针变量的大小。

js 复制代码
#include <stdio.h>

//指针变量的大小取决于地址的大小 
//32位平台下地址是32个bit位(即4个字节) 
//64位平台下地址是64个bit位(即8个字节) 

int main() 
{ 
    printf("%d\n", sizeof(char *)); 
    printf("%d\n", sizeof(short *)); 
    printf("%d\n", sizeof(int *)); 
    printf("%d\n", sizeof(double *)); 
    return 0;
}

15. 结构体

结构体使得c语言有能力可以描述复杂类型。

比如我要描述学生,一个学生的名字+年龄+性别+学号这几项信息。

这里就最好使用结构体进行描述。

例如:

js 复制代码
struct Stu 
{ 
     char name[20];//名字 
     int age;      //年龄 
     char sex[5];  //性别 
     char id[15]; //学号 
};

具体的相关说明以后会分章节描述,本节到此结束。

相关推荐
阿捏利1 小时前
【加解密与C】Rot系列(四)Rot8000
c语言·rot8000
Star在努力2 小时前
14-C语言:第14天笔记
c语言·笔记·算法
程序员编程指南3 小时前
Qt 与 SQLite 嵌入式数据库开发
c语言·数据库·c++·qt
峥无4 小时前
C语言分支与循环深度解析
c语言·开发语言
屁股割了还要学5 小时前
【C语言进阶】柔性数组
c语言·开发语言·数据结构·c++·学习·算法·柔性数组
草莓熊Lotso5 小时前
【LeetCode刷题指南】--有效的括号
c语言·数据结构·其他·算法·leetcode·刷题
☞下凡☜6 小时前
C语言(20250722)
linux·c语言·开发语言
魔力之心6 小时前
C study notes[3]
c语言
zzzzz_ccc7 小时前
AVL树和红黑树的特性以及模拟实现
c语言·数据结构·c++
程序员编程指南9 小时前
Qt 网络编程进阶:WebSocket 通信
c语言·网络·c++·qt·websocket