初识C语言——详细入门一(系统性学习day4)

目录

前言

一、C语言简单介绍、特点、基本构成

简单介绍:

特点:

基本构成:

二、认识C语言程序

标准格式:

简单C程序:

三、基本构成分类详细介绍   

(1)关键字

(2)数据类型

计算机中常用存储单位

数据类型的取值范围

打印输入类型

(3)常量和变量

常量的分类:

对各种常量代码的演示:

变量的分类:

定义变量的方法如下:

总结


前言

   本篇文章将详细地介绍C语言入门基础。


一、C语言简单介绍、特点、基本构成

简单介绍:

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

特点:

(1)简洁的语言

(2)具有结构化的控制语句

(3)丰富的数据类型

(4)丰富的运算符

(5)可对物理地址进行直接操作

(6)代码具有较好的可移植性

(7)可生成高质量、目标代码执行效率高的程序

基本构成:

  1. 关键字(Keywords):C语言中有一些被固定为特定用途的单词,称为关键字。这些关键字在语法中有特殊含义,不能用作标识符(变量名、函数名等)。例如,int、if、for等都是C语言的关键字。  

  2. 标识符(Identifiers):标识符是由字母、数字和下划线组成的字符序列,用来表示变量、函数、结构体等。标识符需要满足一定的命名规则,如以字母或下划线开头,不能使用关键字作为标识符。

  3. 数据类型(Data Types):C语言支持多种数据类型,包括基本数据类型和派生数据类型。基本数据类型包括整型(int)、浮点型(float、double)、字符型(char)等,派生数据类型包括数组、结构体、枚举等。

  4. 变量(Variables):变量是用来存储和表示数据的内存位置,需要在使用之前进行声明。声明变量时需要指定其数据类型和变量名,以便编译器为其分配内存空间。

  5. 运算符(Operators):C语言提供了丰富的运算符,用来进行各种数学和逻辑运算。常见的运算符包括算术运算符(+、-、*、/等)、关系运算符(<、>、==等)、逻辑运算符(&&、||等)等。

  6. 控制结构(Control Structures):C语言提供了多种控制结构,用于控制程序的执行流程。常见的控制结构包括条件语句(if-else)、循环语句(for、while、do-while)和跳转语句(break、continue、return等)。

  7. 函数(Functions):C语言以函数为基本的程序组织单元。函数是一段独立的代码块,用来完成特定的任务。C语言提供了函数库,包含了大量常用的函数,也可以自定义函数来实现特定功能。

  8. 数组(Arrays):数组是一种存储相同类型数据的连续内存空间。通过下标可以访问数组中的元素。C语言中的数组下标从0开始。

  9. 指针(Pointers):指针是一种特殊的变量,用来存储其他变量的内存地址。通过指针可以间接访问和修改变量的值,还可以动态分配内存空间。

  10. 结构体(Structures):结构体是一种自定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的复合类型。结构体的成员可以是不同的数据类型。

二、认识C语言程序

标准格式:

#include <stdio.h>                //引入头文件
int main(void)                    //main函数,程序的入口
{return 0;                     //结束函数,返回
}     

简单C程序:

#include<stdio.h>             //引入头文件int main(void)                     //main 函数是程序的入口,程序从main函数第一行开始执行
{                           //一个项目中main(主)函数有且只有一个                           printf("hello world!\n");//printf 为输出打印的库函数,库函数的使用必须要包含一个头文件                         return 0;                //结束函数,返回
}

三、基本构成分类详细介绍
   

(1)关键字

常用关键字
关键字作用
int  声明整型变量
double声明双精度变量
long 声明长整型变量
char声明字符变量
float  声明浮点型变量
short 声明短整形变量
signed声明有符号类型变量
unsigned声明无符号类型变量
struct声明结构体变量;结构体所占内存大小是其成员所占内存之和
enum声明枚举类型变量
union声明联合数据类型变量
static声明静态变量;最名不符实的关键字
switch 用于开关变量
case用于语句分支
default 开关语句中的其他分支
break跳出当前循环;表示终止本层循环
continue结束当前循环,开始下一轮循环
register声明寄存器变量;最快的关键字
const声明只读变量,其修饰的只读变量必须在定义的同时初始化
volatile说明变量在出现执行中可被隐含地改变 ;最易变的关键字
typedef 用以给数据类型取名
extern声明变量是在其他文件中声明;最会带帽子的关键字
return子程序返回语句,用来终止一个函数并返回后面跟着的值
void声明函数无返回值或者无参数,声明空类型指针
do循环语句的循环体
while 循环语句的循环条件
for一种循环语句
if 条件语句
else条件语句否定分支
goto 无条件跳转语句
sizeof 计算对象所占内存空间大小
auto声明自动变量,缺省时编译器一般默认为auto;最宽宏大量的关键字

    

(2)数据类型

数据类型大小:

计算机中常用存储单位

单位说明
位(Bit)最小的存储单元,只能存储0或1。
字节(Byte)由8个位组成,是计算机中最基本的存储单位。
千字节(KB)约等于1024字节。
兆字节(MB)约等于1024千字节。
吉字节(GB)约等于1024兆字节。
特字节(TB)约等于1024吉字节。


求出他们的数据类型大小,我们需要用到C语言中的一个函数sizeof,这个函数的作用是可以求出⼀个对象(数据类型或者数据对象)的长度(即占⽤内存的⼤⼩,以byte为单位)。注意是以字节为单位。   
具体代码如下:

#include <stdio.h>
int main()
{printf("short:%d\n",sizeof(short));printf("unsgned short:%d\n", sizeof(unsigned short));printf("int:%d\n", sizeof(int));printf("unsigned int:%d\n", sizeof(unsigned int));printf("long:%d\n", sizeof(long));printf("unsigned long:%d\n", sizeof(unsigned long));printf("long long:%d\n", sizeof(long long));printf("unsigned long long:%d\n", sizeof(unsigned long long));printf("float:%d\n", sizeof(float));printf("double:%d\n", sizeof(double));printf("char:%d\n", sizeof(char));return 0;
}


 
   
    

 由运行结果可知:

char类型的数据类型大小为1字节即8位。

short类型的数据类型大小为2字节即16位。

int类型、float类型的数据类型大小为4字节即32位。

long类型、long long类型、double类型的数据类型大小为8字节即64位。

注意,若整数数据类型前面加unsigned即为无符号整数数据类型,数据类型大小不变。

需要注意的是long在32位系统中占用4个字节(32位),而在64位系统中占用8个字节(64位)。因此,可以说unsigned long的大小为4字节或8字节,具体取决于编译器和操作系统的规范。

数据类型的取值范围

数据类型取值范围
char-128 到 127
unsigned char0 到 255
short-32,768 到 32,767
unsigned short0 到 65,535
int-2,147,483,648 到 2,147,483,647
unsigned int0 到 4,294,967,295
long-2,147,483,648 到 2,147,483,647
unsigned long0 到 4,294,967,295
long long-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long long0 到 18,446,744,073,709,551,615
float

精度约为6到7十进制位

double

精度约为15位十进制数

打印输入类型

数据类型打印类型
short%hd
int%d
long%ld
long long%lld
float%f
doule%lf
char%c

(3)常量和变量

常量:

常量是指在程序中固定不变的数值或字符,它们的值在程序运行过程中不能更改。常量可以分为字面常量和符号常量。

常量的分类:

  1. 字面常量:字面常量是指直接写在代码中的常量值。例如,整数常量10、浮点数常量3.14、字符常量'a'等都是字面常量。

  2. 符号常量:符号常量是使用#defineconst关键字定义的常量。它们在程序中表示一个固定的数值或字符串,并且可以在程序中多次使用。

  3. 枚举常量:是指一组具有相同特性的常量集合,在C语言中通过使用enum关键字进行定义。枚举常量可以用于定义一组相关的常量,使程序更加清晰和易读。每个枚举常量都有一个唯一的名称和与之对应的值,默认情况下从0开始递增。我们可以自定义枚举常量的值或顺序。

对各种常量代码的演示:

int main()
{120;//字面常量10;//字面常量//const 修饰常变量const int num = 10;//num是const修饰的常变量//num的值不可被改变,但本质还是一个变量//#define的标识符常量 #define MIN 100printf(" = %d\n", MIN);//枚举常量printf("%d\n", MALE);printf("%d\n", FEMALE);return 0;}

变量: 

变量是在程序执行过程中可以改变其值的一种标识符。变量可以用来存储和表示不同类型的数据,包括整数、浮点数、字符、布尔值等。变量在使用前需要先声明,并且可以通过赋值语句来改变其值。在C语言中,变量的声明需要指定变量的类型和名称。

变量的分类:

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

它们的区别:

局部变量的作用域是变量所在的局部范围,它的生命周期是进入作用域生命周期开始,出作用域生命周期结束。

全局变量的作用域是整个工程,它的生命周期是整个程序的生命周期。

定义变量的方法如下:

int x;             // 声明一个整数类型的变量x
float pi = 3.14;   // 声明并初始化一个浮点数类型的变量pi
char ch = 'A';     // 声明并初始化一个字符类型的变量ch

变量的命名需要符合一定的规则,包括以字母或下划线开头、由字母、数字和下划线组成等。

变量和常量在程序中都具有一定的作用,常量用于表示固定的数值或字符串,而变量用于存储和处理数据。在程序设计中,常量和变量的使用是非常重要的基础概念。


总结

       本篇文章详细地讲了C语言的详细入门基础知识,希望能够帮到大家!

      以后还会给大家展现更多关于C语言的其他重要的基础知识,感谢大家支持懒大王!

      希望这篇博客能给各位朋友们带来帮助,最后懒大王请来过的朋友们留下你们宝贵的三连以及关注,感谢你们!
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fork函数

二.fork函数 2.1函数原型 fork()函数在 C 语言中的原型如下&#xff1a; #include <unistd.h>pid_t fork(void);其中pid_t是一个整型数据类型&#xff0c;用于表示进程ID。fork()函数返回值是一个pid_t类型的值&#xff0c;具体含义如下&#xff1a; 如果调用fork()的…

MyBatis中当实体类中的属性名和表中的字段名不一样,怎么办

方法1&#xff1a; 在mybatis核心配置文件中指定&#xff0c;springboot加载mybatis核心配置文件 springboot项目的一个特点就是0配置&#xff0c;本来就省掉了mybatis的核心配置文件&#xff0c;现在又加回去算什么事&#xff0c;总之这种方式可行但没人这样用 具体操作&…

Python灰帽编程——错误异常处理与面向对象

文章目录 错误异常处理与面向对象1. 错误和异常1.1 基本概念1.1.1 Python 异常 1.2 检测&#xff08;捕获&#xff09;异常1.2.1 try except 语句1.2.2 捕获多种异常1.2.3 捕获所有异常 1.3 处理异常1.4 特殊场景1.4.1 with 语句 1.5 脚本完善 2. 内网主机存活检测程序2.1 scap…

【Java 基础篇】Java字符打印流详解:文本数据的输出利器

在Java编程中&#xff0c;我们经常需要将数据输出到文件或其他输出源中。Java提供了多种输出流来帮助我们完成这项任务&#xff0c;其中字符打印流是一个非常有用的工具。本文将详细介绍Java字符打印流的用法&#xff0c;以及如何在实际编程中充分利用它。 什么是字符打印流&a…

DNG格式详解,DNG是什么?为何DNG可以取代RAW统一单反相机、苹果安卓移动端相机拍摄输出原始图像数据标准

返回图像处理总目录&#xff1a;《JavaCV图像处理合集总目录》 前言 在DNG格式发布之前&#xff0c;我们先了解一下之前单反相机、苹果和安卓移动端相机拍照输出未经处理的原始图像格式是什么&#xff1f; RAW 什么是RAW&#xff1f; RAW是未经处理、也未经压缩的格式。可以…

Rust通用编程概念(3)

Rust通用编程概念 1.变量和可变性1.执行cargo run2.变量3.变量的可变性4.常量5.遮蔽5.1遮蔽与mut区别1.遮蔽2.mut 2.数据类型1.标量类型1.1整数类型1.2浮点数类型1.3数字运算1.4布尔类型1.5字符类型 2.复合类型2.1元组类型2.2数组类型1.访问数组2.无效的数组元素访问 3.函数3.1…

如何解决 503 Service Temporarily Unavailable?

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

想要精通算法和SQL的成长之路 - 填充书架

想要精通算法和SQL的成长之路 - 填充书架 前言一. 填充书架1.1 优化 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 填充书架 原题链接 题目中有一个值得注意的点就是&#xff1a; 需要按照书本顺序摆放。每一层当中&#xff0c;只要厚度不够了&#xff0c;当前层最高…

【考研数学】高等数学第六模块 —— 空间解析几何(1,向量基本概念与运算)

文章目录 引言一、空间解析几何的理论1.1 基本概念1.2 向量的运算 写在最后 引言 我自认空间想象能力较差&#xff0c;所以当初学这个很吃力。希望现在再接触&#xff0c;能好点。 一、空间解析几何的理论 1.1 基本概念 1.向量 —— 既有大小&#xff0c;又有方向的量称为向…

C语言指针,深度长文全面讲解

指针对于C来说太重要。然而&#xff0c;想要全面理解指针&#xff0c;除了要对C语言有熟练的掌握外&#xff0c;还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。 为什么需要指针&#xff1f; 指针解决了一些编程中基本的问题。…

spring aop源码解析

spring知识回顾 spring的两个重要功能&#xff1a;IOC、AOP&#xff0c;在ioc容器的初始化过程中&#xff0c;会触发2种处理器的调用&#xff0c; 前置处理器(BeanFactoryPostProcessor)后置处理器(BeanPostProcessor)。 前置处理器的调用时机是在容器基本创建完成时&#xff…

Axure原型设计累加器计时器设计效果(职业院校技能大赛物联网技术应用项目原型设计题目)

目录 前言 一、本题实现效果 二、操作步骤 1.新建文件 2.界面设计 2.1文本框 2.2 按钮 2.3设计界面完成 3.交互 3.1启动交互设置 3.2 分别设置三个属性 3.2.1 设置值为“0” 3.2.2 文字于文本框 3.2.3 获取焦点时 3.3 停止按钮的交互动作 3.3.1 设置变量值 3.4 重…

私有化部署企业即时通讯(企业im)除了钉钉还有这些

在现代企业中&#xff0c;私有化部署企业即时通讯平台已经成为确保数据安全和实现高效通信的重要手段。除了众所周知的钉钉&#xff0c;WorkPlus作为领先品牌&#xff0c;提供私有化部署企业即时通讯的领先选择。本文将介绍WorkPlus为企业提供的广阔领域和精彩特点&#xff0c;…

详解FreeRTOS:FreeRTOS任务删除过程源码分析(进阶篇—2)

本篇博文讲解FreeRTOS中任务删除过程的源代码,帮助各位更好理解删除任务的原理和流程。 在详解FreeRTOS:FreeRTOS任务管理函数(基础篇—11)中,讲述了可以使用vTaskDelete()函数实现删除任务。 函数源码如下: 程序说明如下: (1)、调用函数 prvGetTCBFromHandle()获取要删…

MQTT Paho Android 支持SSL/TLS(亲测有效)

MQTT Paho Android 支持SSL/TLS(亲测有效) 登录时支持ssl的交互 这是调测登录界面设计 代码中对ssl/tls的支持 使用MqttAndroidClient配置mqtt客户端请求时&#xff0c;不加密及加密方式连接存在以下几点差异&#xff1a; url及端口差异 val uri: String if (tlsConnect…

链表oj题1(Leetcode)——移除链表元素,反转链表,链表的中间节点,

链表OJ 一&#xff0c;移除链表元素1.1分析1.2代码 二&#xff0c;找到链表的中间节点2.1分析2.2代码 三&#xff0c;反转链表3.1分析3.2代码 四&#xff0c;找到链表中倒数第k个节点4.1分析4.2代码 一&#xff0c;移除链表元素 移除链表元素 1.1分析 这里的删除要分成两种…

9月19日作业

完成文本编辑器的保存工作-代码&#xff1a; void Widget::on_pushButton_4_clicked() {//创建保存文件对话框QString filename QFileDialog::getSaveFileName(this,"保存文件","./","All(*.*);;Text files (*.txt)");//创建一个文件对象&…

【VisualStudio】NuGet包管理器下载缓存packages文件夹过大怎么清理

使用Visual Studio 开发工具时间长了&#xff0c;会发现整个项目的总大小越来越大&#xff0c;默认是存放在电脑系统盘里的&#xff0c;随着Windows11系统常常更新重启&#xff0c;导致系统盘闲置空间越来越小&#xff0c;该怎么办呢。 描述问题 整个解决方案项目会越变越大&…

problen(5)ubuntu版本问题

浅浅记录一下这段时间的血和泪吧&#xff0c;大概耗时快一个月了吧&#xff0c;终于解决了...... 因为需要开启pwn之旅&#xff0c;需要在Ubuntu上安装一些东西&#xff0c;就是下面的一条命令&#xff1a; sudo pip3 install pwntools -i Simple Index&#xff08;显示不太好了…

1、RocketMQ概述

第1章 RocketMQ概述 一、MQ概述 1、MQ简介 MQ&#xff0c;Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也称为消息中间件&#xff0c;是一套提供了消息生 产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。 2、MQ用途 从网上…