C语言入门这一篇就够了(进阶篇)

news2024/12/23 12:29:51

C语言入门这一篇就够了(入门篇1)

C语言入门这一篇就够了(入门篇2)

上两篇讲了C语言的基本知识和基本语法,接下来讲C语言结构和实战项目

C语言的函数调用

在C语言中,函数是一种可重用的代码块,它可以被程序中的其他部分调用。函数允许

你把代码分解成更小、更易于管理的部分,并使代码更易于阅读和理解。

我举一个简单的C语言函数调用的示例:

623d825c525cd3d9ad67b5e0a0da8fb7.png

在这个例子中,我们定义了一个名为 add 的函数,该函数接收两个整数作为参数,并返

回它们的和。然后,在 main 函数中,我们调用了 add 函数,并把结果存储在一个变量

中,然后打印出这个结果。

函数调用作为表达式的值:可以通过把函数调用放在一个表达式的后面,让函数返回的值作为这个表达式的值。

例如: int a = add(5, 3);

函数调用作为语句:可以单独一行地调用函数,而不需要赋值给任何变量。

例如: add(5, 3);

函数调用作为函数的参数:可以把函数调用作为另一个函数的参数。

例如: printf("The result is %d\n", add(5, 3));

C语言数组

数组是一种重要的数据结构,它可以在内存中连续存储相同类型的数据元素。在C语言中,数组是用来组织和存储大量数据的有效方式。下面我们将详细介绍C语言数组的概念、声明、初始化以及使用方法。

数组的概念

数组是一个有序的数据集合,它可以存储相同类型的元素,每个元素都可以通过索引访问。在C语言中,数组的索引从0开始,最后一个元素的索引为数组长度减1。数组中的每个元素都有相同的类型,并且数组在内存中是连续存储的。

数组的声明

在C语言中,数组的声明需要指定数组的名称、元素类型和元素数量。例如,声明一个包含5个整数的数组可以如下所示:

int array[5];

这里,array是数组的名称,int是元素的类型,5是元素的数量。

数组的初始化

在C语言中,数组可以在声明时进行初始化。例如,下面的代码声明了一个包含5个整数的数组,并将其初始化为1到5的连续整数:

int array[5] = {1, 2, 3, 4, 5};

如果未对数组进行初始化,则数组的值将是不确定的。因此,在实际使用数组之前,应该对其进行初始化。

数组的使用方法

在C语言中,可以通过索引来访问数组中的元素。例如,下面的代码将打印数组中的每个元素:

for (int i = 0; i < 5; i++)

{       

    printf("%d ", array[i]);   

}

此代码将遍历数组并打印每个元素的值。注意,在C语言中,数组名称本身就是指向数组第一个元素的指针。因此,我们可以直接使用数组名称来访问数组中的元素。例如,下面的代码将打印数组中的第一个元素:

printf("%d ", array[0]);

数组的常用操作

在C语言中,对数组可以进行一些常用的操作,如遍历、查找、排序等。这些操作可以通过使用循环、条件语句和函数来实现。下面是一些常用的操作示例:

  1. 遍历数组:使用for循环遍历数组中的每个元素。例如:

    dc89023cb42184287f78a69e4d94541a.png

  1. 查找元素:使用for循环或二分查找算法在数组中查找特定元素。例如:

c3a979ce1e2533b6789fe7eefee2825a.png

C语言结构体

结构体是一种用户自定义的数据类型,它允许你将多个不同类型的数据组合成一个单独的类型。结构体可以包含多个不同类型的变量,这些变量可以是基本类型或其他结构体类型。

下面是一个简单的结构体定义的例子:

05e97d647daee9881d17c65d715ddf9d.png

在上面的例子中,我们定义了一个名为student的结构体,它包含了一个字符数组name、一个整数age和一个浮点数score

我们可以使用结构体来创建结构化数据,其中每个数据都有不同的类型和含义。例如,我们可以使用上面定义的结构体来表示一个学生的信息,其中name表示学生的姓名,age表示学生的年龄,score表示学生的成绩。

下面是一个使用结构体的例子:

55c848fa50c02e517d60a301c842ca3a.png

在上面的例子中,我们创建了一个名为stu的结构体变量,并初始化了它的三个成员变量。然后,我们使用printf函数打印出了这三个变量的值。

C语言指针

指针是一种特殊的数据类型,它存储了一个内存地址。指针在C语言中的用途非常广泛,包括但不限于动态内存分配函数参数传递数组操作等。

下面是一个关于C语言指针的基本示例:

30b6fb5e6ec568b0565c1f0fd9f500b1.png

在这个例子中,我们首先定义了一个整型变量a并赋值为5,然后定义了一个整型指针p。接下来,我们将指针p指向变量a的地址。最后,我们分别打印了变量a的值和指针p所指向的值。由于p指向了变量a的地址,因此*p代表了变量a的值,输出结果应为5。

指针在C语言中的用法非常灵活,可以通过移动指针来访问和修改内存中的数据,也可以通过指针来传递参数给函数。但需要注意的是,不正确的使用指针可能会导致内存泄漏、野指针等问题,因此在使用指针时需要特别小心。

C语言指针的用途

在C语言中,指针的用途非常广泛,包括但不限于以下几个方面:

1.动态内存分配:通过指针可以动态分配内存空间,用于存储数据或变量。

2.函数参数传递:可以将指针作为参数传递给函数,用于传递大容量数据或避免数据拷贝。

3.数组操作:通过指针可以方便地访问和操作数组元素,如遍历、查找、排序等。

4.字符串操作:字符串本质上是字符数组,通过指针可以方便地对字符串进行操作。

5.回调函数:通过指针可以指向函数地址,实现回调函数的功能。

6.实现复杂的数据结构:如链表、二叉树等,通过指针可以方便地构建和操作这些数据结构。

总之,指针是C语言中非常重要的概念和工具,它可以提高程序的效率和灵活性,但同时也需要注意指针使用的安全性和正确性。

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

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

相关文章

LrC ACR :优化的 AI 天空蒙版

在 Lightroom Classic 和 Adobe Camera Raw 中创建基于 AI 技术的天空蒙版时&#xff0c;可能由于底层算法的原因&#xff0c;选中的天空蒙版在边缘处有晕开的现象&#xff08;又称为“出血” Bleed&#xff09;&#xff0c;从而导致天空蒙版不是很精准。 本文提供了一种特殊方…

广州华锐互动VRAR:利用VR开展刑事案件公安取证培训,沉浸式体验提升实战能力

随着科技的飞速发展&#xff0c;虚拟现实(VR)技术为我们的生活和工作带来了前所未有的便利。近年来&#xff0c;VR技术在刑事案件公安取证培训中的应用逐渐显现出其独特优势。通过模拟真实的犯罪现场&#xff0c;VR技术为学员提供了沉浸式的体验&#xff0c;使他们在安全的环境…

C语言--统计一行字符串的单词个数, 单词用非字母分割.例如“ab235adg 456ad“被认为是3个单词.

一.题目描述 统计一行字符串的单词个数, 单词用非字母分割. 例如"ab235adg 456ad"被认为是3个单词. 二.思路分析 本题的主要难点在于如何判断有一个单词呢&#xff0c;当然遍历字符串是必须的。下面给出两种不同的思路&#xff1a; 一.当前是字母&#xff0c;下一个…

LeetCode | 232. 用栈实现队列

​ LeetCode | 232. 用栈实现队列 OJ链接 解题思路&#xff1a; 此题可以用两个栈实现&#xff0c;一个栈进行入队操作&#xff0c;另一个栈进行出队操作出队操作&#xff1a; 当出队的栈不为空是&#xff0c;直接进行出栈操作&#xff0c;如果为空&#xff0c;需要把入队的…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 4》(8)

《Linux操作系统原理分析之Linux 进程管理 4》&#xff08;8&#xff09; 4 Linux 进程管理4.4 Linux 进程的创建和撤销4.4.1 Linux 进程的族亲关系4.4.2 Linux 进程的创建4.4.3 Linux 进程创建的过程4.4.4 Linux 进程的执行4.4.5 Linux 进程的终止和撤销 4 Linux 进程管理 4.…

4M防错追溯与MES管理系统的融合应用

在现代化制造业中&#xff0c;质量追溯已成为企业核心竞争力的重要组成部分。为了实现精确的质量追溯&#xff0c;制造企业广泛采用了MES管理系统解决方案来进行生产过程中的数据管理。本文将探讨如何通过MES管理系统实现4M防错追溯&#xff0c;并提升企业的生产与管理效率。 一…

预告|万博智云CTO孙琦将出席2023 OpenInfra Days China,并发表最新容灾方案,欢迎报名参会!

2023年12月1日&#xff0c;北京海航万豪酒店将迎来一场令人瞩目的盛会——OpenInfra Days China 2023。 大会主题 本次活动是时隔两年来的首次线下盛会&#xff0c;聚集了全球社区的技术专家、行业领袖以及国内开源基础设施技术企业的代表&#xff0c;旨在交流研究OpenInfra基…

qt 重载信号,使用““方式进行connect()调用解决方案

问题 在Qt中&#xff0c;重载的信号默认是无法使用&这种方式调用的。 因为&只能绑定到一个具体的信号&#xff0c;而重载的信号名称相同&#xff0c;编译器无法确定要绑定哪一个信号。 解决方案 如果非要使用&绑定重载的信号&#xff0c;可以使用函数指针进行转…

OpenAI的Whisper蒸馏:速度提升6倍的Distil-Whisper

1 Distil-Whisper诞生 Whisper 是 OpenAI 研发并开源的一个自动语音识别&#xff08;ASR&#xff0c;Automatic Speech Recognition&#xff09;模型&#xff0c;他们通过从网络上收集了 68 万小时的多语言&#xff08;98 种语言&#xff09;和多任务&#xff08;multitask&am…

Axure基础详解二十一:动态面板随机抽奖效果

效果演示 随机抽奖时闪烁效果抽奖结束后奖品展示效果 组件 分为三块区域【奖品区】、【抽奖盘】、【奖品展示弹窗】 奖品区 【奖品区】由8个同等大小的矩形和一个“抽奖按钮”组成的九宫格。 抽奖盘 建立一个动态面板&#xff0c;设置8个面板状态&#xff0c;命名为“抽奖…

Unity 场景烘培 ——unity灯光和设置天空盒(二)

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神指出。 文章目录 前言一、光源种类1.Directional Light(方向光&#xff0c;平行光)2.Point Light&#xff08;点光源&#xff09;3.Spotlight&#xff08;聚光灯&#xff09;4.Area Light&#xff08;区域光&#xff…

c题目9:证明1000以内的偶数可以写成两个质数之和

每日小语 心若没有栖息的地方&#xff0c;在哪都是流浪。——三毛 自己敲写 这里需要用到一个联系&#xff1a;oushuprime1prime2 这个问题在于将这个联系变换&#xff0c;用于让我们判断是否是质数&#xff0c;转换后可以方便清晰的理解&#xff0c;并且减掉一个变量。 这…

Redis怎么保证数据不丢失

目录 一、Redis使用持久化保证数据不丢失 二、Redis 持久化的三种方式 三、混合持久化的流程 一、Redis使用持久化保证数据不丢失 Redis 中的数据是存放在内存中的&#xff0c;这样可以保证 Redis 高效的运行&#xff0c;然而内存中的数据会随着系统的重启而丢失&#xff0c;那…

c# 字符串转换为byte

c# 字符串转换为byte using System.Text; class proj {internal static void Main(string[] args){byte[] anew byte[3];Console.WriteLine("打印a");Console.WriteLine("a的长度{0}",a.Length);foreach (byte b in a){ Console.WriteLine(b); }a Encodi…

LangChain 实现给动物取名字

mkdir langchain-llm-appcd langchain-llm-app # 用vscode 打开当前目录 code .在macOS上通过终端打开Visual Studio Code&#xff08;VS Code&#xff09;&#xff0c;您可以按照以下步骤操作&#xff1a; 安装VS Code&#xff1a;首先&#xff0c;确保您已经在Mac上安装了Vis…

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中&#xff0c;有unittestHTMLTestRunner自动化测试报告&#xff0c;但是生成的测试报告不够美观详细&#xff0c;今天我们来学习一下PytestAllure生成自动化测试报告。 一&#xff1a;安装python中的allure依赖库 在dos窗口中&#xff0c;输入下面三个命令…

邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站

活动简介 “阿里云云原生 Serverless 技术实践营 ” 是一场以 Serverless 为主题的开发者活动&#xff0c;活动受众以关注 Serverless 技术的开发者、企业决策人、云原生领域创业者为主&#xff0c;活动形式为演讲、动手实操&#xff0c;让开发者通过一个下午的时间增进对 Ser…

美国服务器:全面剖析其主要优点与潜在缺点

​  服务器是网站搭建的灵魂。信息化的今天&#xff0c;我们仍需要它来为网站和应用程序提供稳定的运行环境。而美国作为全球信息技术靠前的国家之一&#xff0c;其服务器市场备受关注。那么&#xff0c;美国服务器究竟有哪些主要优点和潜在缺点呢? 优点 数据中心基础设施&a…

开源与闭源:大模型时代的技术交融与商业平衡

一、开源和闭源的优劣势比较 1.1 开源 优势&#xff1a; 1.技术共享与吸引人才&#xff1a; 开源促进了技术共享&#xff0c;吸引了全球范围内的人才参与大模型的发展&#xff0c;形成了庞大的开发者社区。 2.推动创新&#xff1a; 开源模式鼓励开发者共同参与&#xff0c;推动…

Android 屏幕适配

目录 一、为什么要适配 二、几个重要的概念 2.1 屏幕尺寸 2.2 屏幕分辨率 2.3 屏幕像素密度 2.4 屏幕尺寸、分辨率、像素密度三者关系 三、常用单位 3.1 密度无关像素(dp) 3.2 独立比例像素&#xff08;sp&#xff09; 3.3 dp与px的转换 四、解决方案 4.1 今日头条…