初识C语言---简单了解

目录

[1. 什么是C语言?](#1. 什么是C语言?)

[1.1 ANSI C](#1.1 ANSI C)

[2. 第一个C语言程序](#2. 第一个C语言程序)

[2.1 编写代码](#2.1 编写代码)

[3. 数据类型](#3. 数据类型)

[3.1 每个类型的大小?](#3.1 每个类型的大小?)

[3.2 计算机中的单位](#3.2 计算机中的单位)

[3.3 变量的简单使用](#3.3 变量的简单使用)

[4. 变量和常量](#4. 变量和常量)

[4.1 变量的分类](#4.1 变量的分类)

[4.2 变量的实践使用](#4.2 变量的实践使用)

[4.3 变量的作用域和生命周期](#4.3 变量的作用域和生命周期)

[4.3.1 作用域](#4.3.1 作用域)

[4.3.2 生命周期](#4.3.2 生命周期)

[4.4 常量](#4.4 常量)


1. 什么是C语言?

一门通用的`计算机编程语言`,底层开发。设计目标,提供一种能以简易的方式`编译`、处理低级`存储器`···

1.1 ANSI C

C语言的国际标准(美国国家标准局制定)。

计算机语言的发展:低级------------------------>高级

二进制的指令(1010)--->汇编指令(助记符)--->B语言--->C语言

  • 第一代语言:机器语言

    机器语言是计算机能直接识别的语言,由二进制代码组成,人类难以理解。这种语言本质上是计算机能识别的唯一语言,以后的语言都是在此基础上简化而来。

  • 第二代语言:汇编语言

    汇编语言用助记符代替了操作码,用地址符号或标号代替地址码,大大进步了。尽管还是复杂,用起来容易出错,但在计算机语言发展史上是机器语言向更高级的语言进化的桥梁。

  • 第三代语言:高级语言

    高级语言是一种接近于人们使用习惯的程序设计语言,允许用英文写计算程序,程序中的符号和算式也与日常用的数学式子差不多,因此更容易操控。高级语言发展于20世纪50年代中叶到70年代,流行的高级语言如BASIC、FORTRAN、COBOL、C等已经开始固化在计算机内存里。

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

其编译器主要有Clang、GCC 、WIN-TC、MSVC、Turbo C等。

编辑器:编辑

编译器:编译

什么是编译?C/C++都是编译型语言。

test.c--->编译--->链接--->test.exe(windows编译成exe文件,linux编译成erp文件)

什么是解释?Python/JavaScript是解释型语言。

test.py--->解释器

2. 第一个C语言程序

打开VS---创建项目---创建源文件(.c源文件 .h头文件)---编写代码

创建源文件时一定要注意后缀。

.cpp 编译器会按照C++的语法来编译代码。

.c 编译器会按照C的语法来编译代码。

适用新手小白(安装+编写第一个C语言程序)

在VS code中编写C/C++代码------这篇文章也很好

2.1 编写代码

C语言代码中一定要有main函数(主函数)。printf是一个库函数,专门用来打印数据的。

vs2019环境如何运行代码:ctrl + F5 或 Fn+ctrl+F5 (原始键盘功能Fn)(现有娱乐功能)

多行注释快捷键:Ctrl + /

cpp 复制代码
//std:标准
//i:input
//o:output
#include <stdio.h>    //包含头文件,告诉要使用库函数printf
cpp 复制代码
//标准的主函数写法
int main()  //int:整型类型
{
    return 0;  //0:整数
}

//古老的写法:不推荐
// void main()
// {
    
// }
cpp 复制代码
#include <stdio.h>
int main()
{
    printf("hehe\n");  //  \n表示换行
    return 0;
}
//解释:main函数是程序的入口,一个工程中main函数有且仅有一个

3. 数据类型

cpp 复制代码
1、内置的数据类型
整型、浮点型、字符型
char  //字符数据类型
short  //短整型
int  //整型
long  //长整型
long long  //更长的整型
float  //单精度浮点数
double  //双精度浮点数
2、自定义的数据类型
如结构体(struct)、枚举···

为什么出现这么多类型?丰富表达生活中的各种值。

3.1 每个类型的大小?

cpp 复制代码
#include <stdio.h>
int main()
{
    printf("%d\n",100);  //100
    printf("%zu\n",sizeof(char));  //1字节
    printf("%zu\n",sizeof(short));  //2字节
    printf("%zu\n",sizeof(int));  //4字节
    printf("%zu\n",sizeof(long));  //4字节
    printf("%zu\n",sizeof(long long));  //8字节
    printf("%zu\n",sizeof(float));  //4字节
    printf("%zu\n",sizeof(double));  //8字节
    return 0;
}

%d输出int型,%zu输出size_t型。size_t在库中定义为unsigned int。

一个是整型,一个是无符号整型。

补充:如果%zu不能使用,可以用%u取代。但%zu不能输出负数。

3.2 计算机中的单位

cpp 复制代码
bit:比特位
Byte:字节
kb
mb
gb
tb
pb

1Byte=8bit
1kb=1024Byte
1mb=1024kb
1gb=1024mb
1tb=1024gb
1pb=1024tb

3.3 变量的简单使用

cpp 复制代码
int main()
{
    int age = 20; //向内存申请int类型的空间大小,并将数据20放进去。类型是用来创建变量的;创建变量的本质是向内存申请空间
    double price = 66.6;
    return 0;
}

4. 变量和常量

生活中有些值是不变的(比如:圆周率、性别、身份证号码、血型等等)

有些值是可变的(比如:年龄、体重、薪资等等)

不变的值,C语言中用常量 表示;可变的值C语言用变量表示。

4.1 变量的分类

变量分为局部变量和全局变量。

局部变量:{}内部定义的变量

全局变量:{}外部定义的变量

cpp 复制代码
int b = 20; //全局变量
int main()
{
    int a = 10; //局部变量
    return 0;
}
cpp 复制代码
#include <stdio.h>
int a = 100;
int main()
{
    int a = 10;
    printf("a=%d\n",a);   //当全局变量和局部变量名字相同时,局部变量优先。建议全局变量和局部变量名字不要相同
    return 0;
}
//输出a=10

4.2 变量的实践使用

cpp 复制代码
//写一个代码,计算2个整数的和
//scanf()是一个输入函数,printf()是一个输出函数

#include <stdio.h>
int main()
{
    int num1 = 0;
    int num2 = 0; //初始化变量
    //输入2个整数
    scanf("%d %d",&num1,&num2);
    //求和
    int sum = num1 + num2;
    //输出
    printf("%d\n",sum);
    return 0;
}

若运行报错如下:

C6031 返回值被忽略:"scanf"

C4996 'scanf':This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use CRT_SECURE_NO_WARNINGS. See online help for details.

提示使用scanf_s函数,scanf_s函数是VS编译器自己提供的函数,非标准C提供的函数,那也就是只有VS编译器认识,其它编译器不认识!我的建议是使用scanf函数,如果非要使用scanf_s函数,请研究后再使用!

解决方法:

1、在源文件的第一行放如下代码:#define _CRT_SECURE_NO_WARNINGS 1

2、一劳永逸的方法:(创建源文件时,自动生成#define ···)

在VS的安装路径下有一个文件:newc++file.cpp,在VS工程中创建新的.c或者.cpp文件的时候,都是拷贝newc++file.cpp这个文件的!

1)下载everything,寻找newc++file.cpp文件

2)直接用记事本打开,添加后保存无管理员权限(将newc++file.cpp文件复制一份到桌面,修改后保存,再替换原位置的文件)

4.3 变量的作用域和生命周期

4.3.1 作用域

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

cpp 复制代码
//局部变量的作用域是变量所在的局部范围
#include <stdio.h>
int main()
{ 
    {
        int a = 10;
        printf("%d\n",a);  //10
    }
    printf("%d\n",a);  //报错
    return 0;
}
cpp 复制代码
#include <stdio.h>
int main()
{ 
    int a = 10;
    {
        printf("%d\n",a);  //10
    }
    printf("%d\n",a);  //10
    return 0;
}
cpp 复制代码
//全局变量的作用域是整个工程

//add.c
int a = 100;

//test.c
#include <stdio.h>
extern int a;   //声明来自外部的符号
void test()  //创建一个函数
{
    printf("%d\n",a);
}
int main()
{
    test();  //调用函数,执行后结果:100
    {
        printf("%d\n",a);  //100
    }
    printf("%d\n",a);  //100
    return 0;
}

4.3.2 生命周期

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

局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。

全局变量的生命周期:整个程序的生命周期。

4.4 常量

字面常量、const修饰的常变量、#define 定义的标识符常量、枚举常量

1、字面常量

cpp 复制代码
int main()
{
   30;
   3.14;
   'w'; //字符
   "abc";//字符串 
}

2、const修饰的常变量

cpp 复制代码
#include <stdio.h>
int main()
{
    const int a = 10; //在C语言中,const修饰的a,本质是变量,但是不能直接修改,有常量的属性
    a = 20; 
    printf("%d\n",a); //20
    return 0;
}
//添加const修饰后程序报错
cpp 复制代码
//案列2:理解本质上是变量
int main()
{
    const int n = 10;
    int arr[n] = {0}; //error,arr[n]中的n必须是常量,而const修饰的n本质上是个变量
    return 0;
}

3、#define 定义的标识符常量

cpp 复制代码
#define MAX 100
#define STR "abcdef"    

#include <stdio.h>
int main()
{
    printf("%d\n",MAX); //100
    int a = MAX;
    printf("%d\n",a); //100
    printf("%s\n",STR); //abcdef,%s:打印字符串
    return 0;
}

4、枚举常量

cpp 复制代码
enum Color
{
    //枚举常量,三原色,红蓝绿
    RED,
    GREEN,
    BLUE
};
int main()
{
    int num = 10;
    enum Color c = RED;
    RED = 20; //error
    return 0;
}

最近所学,运用代码来解释概念而非死记硬背,大家可以尝试多敲代码多体验结果。本周就暂且更新至此吧,期待下周再会。如有错误还请不吝赐教。

相关推荐
芒果爱编程2 小时前
MCU、ARM体系结构,单片机基础,单片机操作
开发语言·网络·c++·tcp/ip·算法
明明跟你说过3 小时前
【Go语言】从Google实验室走向全球的编程新星
开发语言·后端·go·go1.19
凌盛羽4 小时前
C#对Excel表csv文件的读写操作
开发语言·windows·物联网·microsoft·c#·excel
VBA63374 小时前
VBA高级应用30例应用在Excel中的ListObject对象:向表中添加注释
开发语言
Dontla4 小时前
Rust字节数组(Byte Array)Rust u8、Vec<u8>、数组切片、向量切片、字符串转字节数组转字符串、&[u8]类型:字节数组引用
开发语言·rust
走在考研路上6 小时前
Python错误处理
开发语言·python
数据小爬虫@6 小时前
Python爬虫:如何优雅地“偷窥”商品详情
开发语言·爬虫·python
CV大法好6 小时前
刘铁猛p3 C# 控制台程序引用System.Windows.Forms报错,无法引用程序集 解决方法
开发语言·c#
工业甲酰苯胺6 小时前
C语言之输入输出
c语言·c++·算法
Days20506 小时前
uniapp小程序增加加载功能
开发语言·前端·javascript