【C语言入门】初识C语言:掌握编程的基石

📝个人主页🌹:Eternity._
⏩收录专栏⏪:C语言 “ 登神长阶 ”
🤡往期回顾🤡:C语言入门
🌹🌹期待您的关注 🌹🌹

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

❀C语言入门

  • 📒1. 选择语句与循环语句
    • 🍁选择语句
    • 🍂循环语句
  • 📙2. 函数
  • 📜3. 数组
    • ⛰️数组定义
    • 🏞️数组下标
    • 🌄数组使用
  • 📚4. 操作符,常见关键字与 #define
    • 🌞操作符
    • 🌙#define
    • ⭐常见关键字
      • 🌈关键字 typedef
      • 🌈关键字static
  • 📝5. 指针
    • 🎩内存
    • 🎈指针变量的大小
  • 📘6. 结构体
  • 📖7. 总结


前言: 在踏入C语言编程的奇妙旅程之初,掌握基本语句无疑是我们搭建知识大厦的坚实基石。C语言,作为一门历史悠久且功能强大的编程语言,其简洁明了的语法结构为我们提供了表达逻辑、控制程序流程的强大工具。而基本语句,正是这些工具中的基础与核心。

本篇文章旨在引领初学者走进C语言基本语句的世界,通过深入浅出的讲解和实例演示,帮助大家理解并掌握这些语句的用法。我们将从最基本的赋值语句开始,逐步深入到条件判断、循环控制等关键语句,让每一位读者都能清晰地感受到C语言编程的魅力与力量

让我们一同踏上这段充满挑战与收获的C语言编程之旅吧!


📒1. 选择语句与循环语句

🍁选择语句

C语言中的选择语句主要用于基于不同条件执行不同的代码块。C语言中主要有两种选择语句:if语句和switch语句

选择语句流程图

Created with Raphaël 2.3.0 开始 表达式 语句一 结束 语句二 yes no

选择语句代码示例

int main()
{int n = 0;printf("你会去敲代码吗?(选择1 or 0):>");scanf("%d", &n);if(n == 1){prinf("坚持,你会有好offer\n");}else{printf("放弃,回家卖红薯\n");}return 0;
}

🍂循环语句

C语言中的循环语句允许我们重复执行一段代码多次,直到满足某个条件为止。

C语言的循环结构实现的三种方式:

  • while语句
  • for语句
  • do … while语句

循环语句流程图

Created with Raphaël 2.3.0 开始 买彩票 走向成功 老实学习 yes no yes no

循环语句代码示例(while循环)

// while循环
int main()
{printf("努力学习\n");int line = 0;while (line <= 20000){line++;printf("我要继续努力敲代码\n");}if (line > 20000)printf("好offer\n");return 0;
}

注意:剩下的没讲的内容会在后续的专题讲解


📙2. 函数

C语言中的函数是执行特定任务的独立代码块。函数允许你将代码组织成可重用的单元,这有助于使程序更加模块化、易于理解和维护。函数可以接受输入(称为参数)并可以返回输出(称为返回值)

场景分析

// 在一般的时候,我们让两个数相加就会用以下方法
// 当时当我们要多次使用时,就会冗余,降低代码可读性
// 为了能够实现功能复用,我们通常会使用函数来定义这个加法方式
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;
}

函数代码示例

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

函数的特点就是简化代码,代码复用,关于函数先介绍这么多,让我们进入下一环节


📜3. 数组

C语言中的数组是一种基本的数据结构,它允许你存储相同类型的数据项集合。在数组中,每个数据项(也称为元素)可以通过索引来访问,索引通常是一个整数,用于指定元素的位置。数组中的索引是从0开始的,这意味着第一个元素的索引是0,第二个元素的索引是1,依此类推

注意:

  • 数组的大小在编译时是固定的,不能动态改变
  • 数组索引越界是C语言中常见的错误之一,它可能导致未定义行为,包括程序崩溃
  • 数组名在表达式中通常被当作指向数组第一个元素的指针,但在数组定义和数组大小表达式中除外

⛰️数组定义

数组的定义包括指定数组的类型、数组的名称以及数组中元素的数量(即数组的大小)。数组的大小在定义时必须是一个常量表达式,不能是变量

type arrayName[size];
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
  • type 是数组中元素的类型(如 int、float、char 等)。
  • arrayName 是数组的名称。
  • size 是数组中元素的数量。

🏞️数组下标

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

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

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

在这里插入图片描述


🌄数组使用

数组遍历代码演示

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

📚4. 操作符,常见关键字与 #define

🌞操作符

操作符简单介绍为主,后面课件重点讲

类型操作符
算术操作符+ - * / %
移位操作符>> <<
位操作符& ^ |
赋值操作符= += -= *= /= &= ^=

单目操作符

操作符功能
逻辑反操作
-负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位)
~对一个数的二进制按位取反
--前置、后置--
++前置、后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换

关系操作符

操作符功能
>大于
>=不小于
<小于
<=不大于
!=不等于
==相等

逻辑操作符

操作符功能
&&逻辑与
||逻辑或

条件操作符

exp1 ? exp2 : exp3

逗号表达式

exp1, exp2, exp3, …expN

注意:逗号表达式会取最后一个的值作为结果

下标引用、函数调用和结构成员

[] () . ->

🌙#define

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

⭐常见关键字

C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的

在这里插入图片描述


🌈关键字 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;
}

🌈关键字static

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

  • 修饰局部变量-称为静态局部变量
  • 修饰全局变量-称为静态全局变量
  • 修饰函数-称为静态函数

修饰局部变量

void test()
{//static修饰局部变量static int i = 0;i++;printf("%d ", i);
}
int main()
{int i = 0;for(i=0; i<10; i++){test();}return 0;
}

static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束

修饰全局变量

//代码1
//add.c
int g_val = 2018;
//test.c
int main()
{printf("%d\n", g_val);return 0;
}
//代码2
//add.c
static int g_val = 2018;
//test.c
int main()
{printf("%d\n", g_val);return 0;
}

一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用,所以代码2在编译的时候会出现连接性错误

修饰函数

//代码1
//add.c
int Add(int x, int y)
{return c+y;
}
//test.c
int main()
{printf("%d\n", Add(2, 3));return 0;
}
//代码2
//add.c
static int Add(int x, int y)
{return c+y;
}
//test.c
int main()
{printf("%d\n", Add(2, 3));return 0;
}

一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用,所以代码2在编译的时候会出现连接性错误


📝5. 指针

C语言中的指针是C语言编程中一个非常核心且强大的特性。指针允许你直接访问内存地址,并操作这些地址中存储的数据。理解指针对于深入理解C语言以及后续学习更高级的语言(如C++、Java等)中的内存管理非常关键


🎩内存

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

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
在这里插入图片描述
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的

取出变量地址代码示例

int main()
{int num = 10;&num; // 取出num的地址// 注:这里num的4个字节,每个字节都有地址// 取出的是第一个字节的地址(较小的地址)printf("%p\n", &num);//打印地址,%p是以地址的形式打印return 0;
}

在这里插入图片描述
地址的存储,需要定义指针变量

int num = 10;
int *p;//p为一个整形指针变量
p = &num;

指针代码示例

int main()
{int num = 10;int *p = &num;*p = 20;return 0;
}

在这里插入图片描述
注意:以整形指针举例,可以推广到其他类型


🎈指针变量的大小

//指针变量的大小取决于地址的大小
//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;
}

结论:指针大小在32位平台是4个字节,64位平台是8个字节


📘6. 结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型

比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息

结构体定义

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

结构体的初始化

//打印结构体信息
struct Stu s = {"张三"20"男""20180101"};//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps->id);

📖7. 总结

在结束这篇关于介绍C语言基本语句的文章之际,我们不禁感慨于C语言那简洁而强大的魅力。从最基本的变量声明、数据类型到控制流语句如if-else、for循环、while循环,再到函数定义与调用,每一个基础语句都是构建复杂程序大厦的基石

通过学习和实践这些基本语句,我们不仅能够编写出解决简单问题的程序,更为后续深入学习C语言的高级特性,如指针、结构体、文件操作等打下了坚实的基础。C语言不仅仅是一种编程语言,它还是理解计算机底层工作原理、掌握内存管理、优化程序性能的一把钥匙

希望这篇文章能够成为你C语言学习之旅的一个良好起点,激发你对编程的无限热爱与探索欲。记住,编程之路虽长且艰!
在这里插入图片描述

希望本文能够为你提供有益的参考和启示,让我们一起在编程的道路上不断前行!
谢谢大家支持本篇到这里就结束了,祝大家天天开心!

在这里插入图片描述

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

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

相关文章

单片机关键任务优先级的实现学习

与总体产品联调时&#xff0c;需要各个单机系统严格按照总体要求&#xff0c;进行数据输出&#xff0c;时间的偏差将出现系统异常&#xff0c;控制失败等不稳定情况产生&#xff0c;甚至影响到产品安全。 因此必须确保某些关键任务的优先执行。单片机任务优先级一般有两种方式…

[小试牛刀-习题练]《计算机组成原理》之指令系统

一、选择题 0.【指令-课本习题】某计算机按字节编址&#xff0c;指令字长固定且只有两种指令格式&#xff0c;其中三地址指令29条&#xff0c;二地址指令107条&#xff0c;每个地址字段为6位&#xff0c;则指令字长至少应该是&#xff08;A&#xff09; A.24位 B. 26位 C. 28位…

ctfshow web sql注入 web242--web249

web242 into outfile 的使用 SELECT ... INTO OUTFILE file_name[CHARACTER SET charset_name][export_options]export_options:[{FIELDS | COLUMNS}[TERMINATED BY string]//分隔符[[OPTIONALLY] ENCLOSED BY char][ESCAPED BY char]][LINES[STARTING BY string][TERMINATED…

Android系统层屏蔽弹出停止运行对话框

项目场景&#xff1a; 车载项目&#xff0c;ATC8257-Android9.0系统平台&#xff0c;福田汽车P3系列项目 项目使用高德公版地图前提是无法获得任何高德定制服务&#xff0c;每次刷完机去切换语言系统会弹出"高德地图已停止运行"弹窗&#xff0c;严重影响用户使用体…

【第三版 系统集成项目管理工程师】第6章 数据工程

持续更新。。。。。。。。。。。。。。。 【第三版】第六章 数据工程 6.1数据采集和预处理6.1.1 数据采集 P2346.1.2 数据预处理6.1.3 数据预处理方法1.缺失数据的预处理-P2352.异常数据的预处理-P2363.不一致数据的预处理-P2364.重复数据的预处理-P2365.格式不符数据的预处理…

UE5 03-物体碰撞检测

在你需要碰撞的物体上添加一个碰撞检测组件 碰撞预设 设置为NoCollision,这样移动过程中就不会有物理碰撞阻挡效果,只负责检测是否碰撞,比较难解释,如果学过Unity的话,可以把它理解成 Collision 为 Trigger

My sql 安装,环境搭建

以下以MySQL 8.0.36为例。 一、下载软件 1.下载地址官网&#xff1a;https://www.mysql.com 2. 打开官网&#xff0c;点击DOWNLOADS 然后&#xff0c;点击 MySQL Community(GPL) Downloads 3. 点击 MySQL Community Server 4.点击Archives选择合适版本 5.选择后下载第二个…

密码学复习

目录 基础 欧拉函数 欧拉函数φ(n)定义 计算方法的技巧 当a=a_1*a_2*……*a_n时 欧拉定理 剩余系 一些超简单密码 维吉尼亚 密钥fox 凯撒(直接偏移) 凯特巴氏(颠倒字母表) 摩斯密码(字母对应电荷线) 希尔(hill)密码 一些攻击 RSA 求uf+vg=1 快速幂模m^…

Python | Leetcode Python题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; class Solution:def rob(self, nums: List[int]) -> int:def robRange(start: int, end: int) -> int:first nums[start]second max(nums[start], nums[start 1])for i in range(start 2, end 1):first, second second, max(fi…

Bootstrap 图片

Bootstrap 图片 Bootstrap 是一个流行的前端框架,它提供了一套丰富的工具和组件,用于快速开发响应式和移动优先的网页。在本文中,我们将探讨如何使用 Bootstrap 来处理和展示图片,包括图片的响应式设计、图片样式和图片布局。 响应式图片 Bootstrap 通过其栅格系统提供了…

人工智能在物流领域的应用,智慧物流大有可为!

物流是复合型服务产业&#xff0c;作为经济的重要组成部分&#xff0c;受到人工智能技术的深刻影响。物流行业的人工智能应用也将助推人工智能技术的发展&#xff0c;人工智能技术应用于物流行业&#xff0c;应用领域包括以下方向&#xff1a; 第一、车货匹配系统 使用人工智…

AI智能音箱用2×15W立体声功放芯片NTP8918

智能音箱是近年来非常受欢迎的智能家居产品之一&#xff0c;它集成了人工智能技术和音频技术&#xff0c;能够为用户提供语音助手、音乐播放、智能家居控制等多种功能。其中&#xff0c;音频输出是智能音箱的核心功能之一&#xff0c;而功放芯片则是实现音频放大的关键组成部分…

00 如何根据规律在变化中求发展?

你好&#xff0c;我是周大壮。目前&#xff0c;我已在搜索推荐等算法技术领域从事研发近 10 年&#xff0c;做过诸多流量分发领域的算法技术工作。 如今任公司同城的算法架构师、技术委员会人工智能分会委员、公司本地服务事业群算法策略部负责人&#xff0c;我主要负责公司集…

计算机网络之局域网

目录 1.局域网的基本概念 2.LAN的特性 3.局域网特点 4.拓扑结构 5.传输媒体的选择 6.传输媒体 7.传输技术 8.传输技术距离问题 9.LAN的逻辑结构 10.局域网工作原理 上篇文章内容&#xff1a;OSI七层体系结构 1.局域网的基本概念 局域网 是将分散在有限地 理范围内&…

51单片机定时器/计数器

欢迎入群共同学习交流 时间记录&#xff1a;2024/7/3 一、电路原理图 51单片机具有两个定时器T0、T1 二、知识点介绍 1、寄存器介绍 &#xff08;1&#xff09;TMOD方式寄存器 T0为例介绍&#xff1a; 工作方式选择位M1、M0 常用方式为方式1、方式2&#xff0c;方式2低…

【按键精灵】#1找图、找色、移动和点击

关键字&#xff1a; 找图、找色、移动和点击 找图&#xff1a; 抓抓截图&#xff0c;添加到附件 FindPic 0,0,1024,768,"Attachment:\Xmind.bmp",0.9,intX,intYIf intX > 0 And intY > 0 Then TracePrint "找到了" //找到打印Else TracePri…

Python | Leetcode Python题解之第214题最短回文串

题目&#xff1a; 题解&#xff1a; class Solution:def shortestPalindrome(self, s: str) -> str:n len(s)fail [-1] * nfor i in range(1, n):j fail[i - 1]while j ! -1 and s[j 1] ! s[i]:j fail[j]if s[j 1] s[i]:fail[i] j 1best -1for i in range(n - 1,…

宠物商城系统7000字文档20页ppt java项目javaweb项目ssm项目jsp项目java课程设计java毕业设计

文章目录 宠物商城系统一、项目演示二、项目介绍三、7000字项目文档四、20页ppt五、部分功能截图六、部分代码展示七、底部获取项目源码带7000字文档和20页ppt&#xff08;9.9&#xffe5;带走&#xff09; 宠物商城系统 一、项目演示 宠物商店 二、项目介绍 语言: Java 数据…

Echarts折线图

实现效果&#xff1a; 代码&#xff1a; <template><div class"echarts"><div class"select-box"><div v-for"(item,index) in trendList":key"index":class"[period item.id?active:,item]"click&…

PyMuPDF 操作手册 - 08 API - Document属性方法和简短说明

文章目录 https://pymupdf.readthedocs.io/en/latest/document.html#Document 方法/属性简短描述Document.add_layer()仅限 PDF:进行新的可选内容配置Document.add_ocg()仅限 PDF:添加新的可选内容组Document.authenticate()访问加密文档Document.bake()仅限 PDF:将…