浅谈C语言

本文介绍了C语言的基础知识,包括C语言的定义、常用编译器、创建程序的步骤,详细讲解了数据类型、变量和常量的定义与使用,特别是变量的作用域和生命周期,以及字符串、转义字符和注释的用法。此外,文中还涉及了选择语句(if)和循环语句(while)的基本结构,函数的定义和数组的概念,以及操作符和关键字的作用。
摘要由CSDN通过智能技术生成

今天我想来浅谈一下C语言,简单认识一些C语言的基本知识,从而对C语言有一个大概的认识。

本次内容较多,可以根据左边的目录来享用。


一、什么是C语言

C语言是一种人和计算机交流的语言,是一门通用的计算机编程语言,C语言广泛应用于底层开发

常用编译器有Dve-C++,VS等


二、创建C语言程序

1.创建项目

2.创建.c源文件

3.写代码

4.运行

 解析:

  1. #include <stdio.h>是引头文件
  2. main函数是程序的入口
  3. 一个工程有且仅有一个main函数三、数据类型

三、数据类型

在我们的生活中,有各种各样的数据类型,因此C语言作为人与计算机沟通的桥梁,其数据类型自然也是丰富多彩的。

1.以下是C语言的各种数据类型

 2.各种数据类型的大小

3.类型的使用


四、变量、常量

1.定义变量

 格式:(类型 变量名 = 值;)

 2 .变量的命名规则

  1. 只能由字母(包括大写和小写)、数字和下划线( _ )组成。
  2. 不能以数字开头。
  3. 长度不能超过63个字符。
  4. 变量名中区分大小写的。
  5. 变量名不能使用关键字

3.变量的分类

全局变量

局部变量

#include <stdio.h>
int global = 2019;//全局变量
int main()
{
    int local = 2018;//局部变量
    
    int global = 2020;//局部变量
    printf("global = %d\n", global);
    return 0;
}

注:当局部变量和全局变量名字冲突的情况下,局部优先。

 4.变量的作用域和生命周期

 5.常量

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

C语言中的常量分为以下以下几种:

  • 字面常量

  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量
#include <stdio.h>
//举例
enum Sex     //enum枚举关键字
{
 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);     //0
    printf("%d\n", FEMALE);   //1
    printf("%d\n", SECRET);   //2
    //注:枚举常量的默认是从0开始,依次向下递增1的。若赋初始值,则从所赋值的开始
    return 0;
}

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


四、字符串+转译字符+注释

1.字符串

'a'   //字符a,用单引号
"abc" //字符串abc,用双引号

注:字符串在结尾的位置隐藏了一个 \0 的字符。

       字符串的结束标志是一个 \0 的转义字符。

       在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

       打印是遇到\0才停止打印。

我们通过程序来直观感受一下上面三点

 2.转义字符

顾名思义,转义就是改变原来的意思

我们通过程序来体会一下

 由上面的程序可以,代码中的\t打印出来的结果不是\t,取而代之的是一段空格,说明了\t的意义改变了。那么在C语言中有哪些转义字符呢?

以下是C语言的转义字符,看了之后,希望各位可以通过上机来体会其中各个字符的意思。

3.注释

在我们平常写代码的时候,遇到不需要的代码的时候,我们可以删掉他,也可以将其注释掉。程序运行的过程中。是不会编译注释的内容的 ,所以在写一下复杂难懂的代码时,可以写注释(相当于做笔记),便于日后理解。

注释有两种风格

  • C语言风格的注释 /*xxxxxx*/         缺陷:不能嵌套注释
  • C++风格的注释 //xxxxxxxx           可以注释一行也可以注释多行
#include <stdio.h>
int Add(int x, int y)
{
    return x+y;
}
/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/


int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法


    printf("%d\n", Add(1, 2));
    return 0;
}


五、选择语句

这次我们先介绍一个if语句

if语句格式

if(表达式)     表达式的作用是作为一个条件判断,符合条件,执行语句1;否则执行语句2.
   语句1;
else
   语句2;

我们来看代码 

#include <stdio.h>
int main()
{
    int coding = 0;
    printf("你会好好学习吗?(选择1 or 0):>");
    scanf("%d", &coding);
    if(coding == 1)         
   {
       prinf("会,你会有好结果\n");
   }
    else
   {
       printf("放弃,回家卖红薯\n");
   }
    return 0;
}

六、循环语句

这次我们也只介绍一个while语句

首先,我们来看看while语句的结构

while语句的一般表达式

while(表达式)           
     
        循环体语句;


这里的表达式作为一个条件判断,判断是否要执行循环体。
若条件成立,则执行语句体。反之跳出循环体
//while循环的实例
#include <stdio.h>
int main()
{
    printf("加入比特\n");
    int line = 0;
    while(line<=20000)
   {
        line++;
        printf("我要继续努力敲代码\n");
   }
    if(line>20000)
        printf("好offer\n");
    return 0;

七、函数

函数体的结构


返回值类型   (类型  变量)
{
     函数体语句;
}

看看代码

题目:写一个函数求两个整数的较大值
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int MAX(int x, int y)    //函数
{
    if(x > y)
        return x;
    else 
        return y;
}

int main()
{
    int num1 = 10;
    int num2 = 20;
    scanf("%d %d", &num1, &num2);
    
    int max = MAX(num1, num2);
    printf("max = %d\n", max);
    
	return 0;
}

八、数组

一堆相同元素的元素储存在一起,叫数组 

1.定义数组

   int    arr    [10]         =   {1,2,3,4,5,6,7,8,9,10};
数据类型  数组名  [元素的个数]  = {数组里面的元素};
//定义一个整形数组,最多放10个元素

2.数组的下标

C语言规定:数组的每个元素都有一个下标,下标是从0开始的。

数组可以通过下标来访问的 。

比如:

int arr[10] = {0}; //如果数组10个元素,下标的范围是0-9

 

3.数组的使用

 我们来看代码

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

 九、操作符

简单介绍为主

  • 算术操作符

+      -      *      /      %

加   减   乘   除   取余

  • 移位操作符(移动的是二进制位)

>>    <<

  • 位操作符

&    ^    |

  • 赋值操作符

 =     +=    -=    *=    /=    &=    ^=    |=    >>=   <<=

  • 单目操作符 

 

  •  关系操作符

 

  •  逻辑操作符

 

  •  条件操作符

 exp1 ? exp2 : exp3

三目运算符:
 m = (a > b ? a : b);
 
 等价于:
if (a > b)	
   m = a;
else
   m = b;
  •  逗号表达式

exp1, exp2, exp3, …expN

逗号表达式:结果是最后一个表达式的结果,但也要从左往右依次算起,不可跳过某一个表示式进行运算
int main()
{
    int a = 3;
	int b = 5;
	int c = 0;
	int d = (a+=3,b-=a,c=a+b,c-2);
	//        6    -1    5    3 
	
	printf("%d\n", d); //打印的结果:3
	return 0;
}
  • 下标引用、函数调用和结构成员 

 []    ()    .    ->


十、关键字

C语言为我们提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。在平时写代码定义变量的时候,不能把关键字作为变量名

 

 下面我来简单介绍两个关键字:

1.关键字 typedef

typedef 顾名思义是类型定义,这里应该理解为类型重命名

意思是将类型名重新命名,写代码的时候就可以将新名字替换掉旧名字,在以后的工程中会有极大妙用!

//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
    //观察num1和num2,这两个变量的类型是一样的
    unsigned int num1 = 0;   
    uint_32 num2 = 0;
      return 0;
}

2.关键字static

 在C语言中:

   static是用来修饰变量和函数的

1. 修饰局部变量-称为静态局部变量

2. 修饰全局变量-称为静态全局变量

3. 修饰函数-称为静态函数

a. static修饰局部变量

#include <stdio.h>
void add();
void add()
{
	int a = 1;
	static int b = 1; //static 修饰
	a++;
	b++;
	
	printf("%d ", a); // 输出的结果:2 2 2 2 2  
	printf("%d ", b); // 输出的结果:2 3 4 5 6  
}

int main()
{
	int i = 0;
	while (i < 5)
	{
		add();
    	i++;
	}
	return 0;
}

分析:

  • static修饰局部变量(改变了局部变量的生命周期)本质上改变了变量的存储类型,储存类型由栈区变成静态区,使得该变量的生命周期变长,直到程序结束,该变量的生命周期才结束。
  • static修饰局部变量,影响的是生命周期,不影响作用域。 

 b.static修饰全局变量

 分析:

全局变量具有外部链接属性,所以本源文件可以调用其他源文件的全局变量。

当static修饰全局变量后,该全局变量由外部链接属性变成了内部链接属性,此时全局变量只能在自己所在的.c文件中使用,其他.c文件无法链接使用,不能用extern调用。

因此,static修饰全局变量是改变全局变量的作用域

 c.tatic修饰函数

 分析:

函数具有外部链接属性,所以本源文件可以调用其他源文件的函数

当static修饰函数后,该函数(Add)由外部链接属性变成了内部链接属性,此时函数(Add)只能在自己所在的.c文件中使用,其他.c文件无法链接使用,不能用extern调用。

因此,static修饰函数是改变函数的作用域。

小结:

在本次的浅谈C语言中,讨论了很多的知识点,但是都是浅尝辄止,目的是为了了解一下C语言,也希望各位C语言初学者可以多多练习,巩固知识。同时也算我这3天学习C语言的一个小小总结,还有其他知识,待我们日后交流。感谢各位读者的观看,若内容写得不好,请多多指正,让我们一起进步!!

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值