C语言基础_随机数、数组、函数、指针

0、随机数:

  • 要用C语言产生随机数,首先在预处理程序部分要引入stdlib.h头文件,然后就可以用rand()在后续程序中生成随机数了。
  • 如果不设置随机数种子srand(),后面生成的随机数序列就是以41开头的一个固定序列,因此一般以系统时间来设置随机数种子,所以在预处理程序部分还要引入time.h头文件。通过代码srand((unsigned int)time(NULL)); 设置随机数种子。需要注意的是,随机数种子设置一次即可,后面每次生成随机数就行了。

1、数组:

  • 数组:由编译器在栈中申请一片连续空间,其中每一个空间中的元素类型是相同的。因此数组可以通过指针自增,自减来遍历。
  • 语法:数组类型 数组名[数组大小] = {x,x,~,x};
    • 设置数组时,在给数组一次性赋值的情况下,可以省略数组大小。
    • 设置数组时,只是定义数组类型,数组名和数组大小的情况下,可以通过for循环给数组初始化。
  • 数组访问的时候,数组下标都是从0开始的。

2、函数:

  • 函数是面向过程编程语言的最基本的单位。

  • 函数是一个代码块,拥有特定的输入输出接口,用于实现一个特定的功能。

  • 函数优点:
    1、提高代码的可读性
    2、提高代码复用性
    3、提高了可移植性
    4、提高可维护性

  • 函数的定义:

函数类型 函数名(形参){函数体
}

函数的调用:函数名(实参);

  • 函数的类型和返回值
    • 函数可以有返回值,也可以没有返回值
    • 函数的类型就是返回值的类型,可以是任意类型
    • 函数的返回值是由return来给出的,return除了可以给函数返回值以外,还能终止函数。
    • 如果没有返回值,函数类型就是void,没有返回值可以使用return,直接后面跟分号就可以。
  • 注意:在c语言中,函数如果写在主函数后面,那么在主函数前面要写上函数声明,写函数声明只需要写上:函数类型 函数名(形参)即可。
  • 函数递归:函数递归,可以理解就是两个过程,一个是递,一个是归,这个两个过程的转折点就是递归终止条件,满足某个条件之后,递归程序就从递的过程转向了归的过程。

3、指针:

  • 指针的定义就是:存放变量地址的变量;
  • 指针初始化时,为什么指针类型要求必须和它所指向的变量类型一致?
    答:不同类型的变量占用的内存空间大小不同(如int通常 4 字节,char1 字节)。指针类型决定了指针进行加减运算时的步长,以及解引用时访问的内存范围。例如:int* 指针 + 1 会移动 4 字节(跳过一个int),而char* 指针 + 1 只移动 1 字节。如果类型不匹配,可能导致访问越界。
  • int* p; 执行了p+1,就相当于让p保存的地址向后移动4个字节,因为指针指向的是整型变量。数组在内存中是连续存放的,所以可以通过这种方式访问数组中每个元素,一维数组的数组名就是数组的首地址。
  • 指针的初始化方式如下:
int a = 12;
// 正确的指针初始化方式:
int* p1 = &a;
// 错误的指针初始化方式:
int* p2;
*p2 = a;
  • 初始化名命的时候,int p = &a; 在初始化过程中是"解引用"符号,&是"取地址"符号。
  • int* p 等价于 &a; *p等价于a;
  • 如果函数形参设置为指针(int* p),那么传递到函数形参位置的实参就得是一个变量地址(&a)。通过函数设置形参的方式,可以让本来只能返回一个值的函数,返回多个值,这种方法的本质就是,函数把传递进去的变量的值通过运算进行了修改( 利用了*p等价于a)。

总结:

  • 函数是一种便于模块化代码的方式,哪一块出问题就改哪一块代码即可。
  • 指针方便了数组遍历,打破了函数只能返回一个值的魔咒。

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

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

相关文章

PHP‑ORT扩展构建纯PHP机器学习的推荐系统

结合 PHP‑ORT 构建推荐系统的核心思想是:使用 ONNX 格式的机器学习模型,在 PHP 中本地执行推理,实时给出推荐结果。下面是一个完整的架构设计与实现路径,适合你快速上手。🎯 场景目标 你想在一个 PHP 网站中实现推荐功…

PromptPilot搭配Doubao-seed-1.6:定制你需要的AI提示prompt

目录 一、PromptPilot 二、基于产品评价的用户情感分析 2.1 使用PromptPiolt工具进行提示词生成 2.2 基于prompt的模型调试 2.3 基于prompt的批量数据测评 2.4 基于多轮对话的prompt测试 如今,我们正身处一个 AI 技术飞速迭代的时代。人工智能早已不再是实验室…

MSPM0开发学习笔记:二维云台结合openmv实现小球追踪

文章目录前言一、硬件选择二、原理介绍(UART)三、硬件连线三、软件代码1、视觉部分代码(Openart)2、控制部分代码(MSPM0)(1) UART部分(2) 计算函数部分&#…

【CTF-WEB-SQL】SQL注入基本流程(sql-labs的Less11)(用burp抓取post然后用sqlmap盲注)

题目 从第11less开始,就是POST表单了burp抓取数据包将抓取到的数据包存放到桌面,保存为post.txt数据包内容如下:POST /Less-11/ HTTP/1.1 Host: 223.112.39.132:44537 Content-Length: 39 Cache-Control: max-age0 Accept-Language: zh-CN,zh…

WPF 与 Winform :Windows 桌面开发该用谁?

WPF 与 Winform :Windows 桌面开发该用谁? 一、 WPF 与 Winform的概念 WPF:颜值与实力并存的 “后起之秀” Winform:简单直接的 “老前辈” 二、WPF 与 Winform 的核心差异 1. 设计理念:分离 vs 耦合 2. 布局系统:灵活适配 vs 固定坐标 3. 视觉效果:绚丽动画 vs 朴素原生…

【Git学习】入门与基础

目录 Git的安装 Git 配置用户信息 Git 初始化本地仓库 Git 工作区、暂存区和版本库 Git 跟踪文件 Git 修改文件 Git 删除文件 Git 撤销本地文件的修改 Git 取消暂存 Git 跳过暂存区 Git 版本回退 Git 撤销提交 Git 设置忽略文件 Git 比较文件差异 Git 代码托管平台…

idea添加gitlab访问令牌

1.按下图所示顺序操作gitlab,获取到对应的token;2.填写对应的gitlab地址和第一步获取的token

人工智能领域、图欧科技、IMYAI智能助手2025年5月更新月报

2025年5月IMYAI平台技术动态与模型更新综述 摘要: 本文整理了2025年5月期间IMYAI平台发布的主要技术更新、新模型上线信息及功能调整公告,涵盖DeepSeek、Gemini、Claude、即梦、Suno等模型动态及平台功能优化。 正文: 一、 模型更新与上线Dee…

机器人权利:真实还是虚幻,机器人权利研究如何可能,道德权利与法律权利

一、机器人权利:真实还是虚幻?机器人权利的讨论源于技术进步对传统法律与伦理体系的冲击,其真实性取决于技术发展阶段与社会接受度的互动。当前,机器人权利仍呈现“虚幻与真实交织”的特征:技术基础:从工具…

通信小白产品学习碎片01

1. 云中继(Cloud Media Relay) 运营商在Volte/Vonr场景中引入的核心网关键功能,用于优化媒体流的传输路径,解决跨运营商、跨地域通信时的网络绕行问题。 传统:A终端—>A核心网—>跨网互联点—>B核心网—>…

⭐CVPR2025 3D 生成新框架|Kiss3DGen 让 2D 扩散模型玩转 3D 资产生成

⭐CVPR 3D 生成新框架|Kiss3DGen 让 2D 扩散模型玩转 3D 资产生成 📄论文题目:Kiss3DGen: Repurposing Image Diffusion Models for 3D Asset Generation ✍️作者及机构:Jiantao Lin、Xin Yang、Meixi Chen 等(HKUST …

HTTP基本结构

目录前言1. 概念2. HTTP基本格式2.1 抓包原理2.2 抓包软件使用2.3 抓包结果3. HTTP请求3.1 URL3.2 方法3.3 版本号3.4 HTTP报头3.4 正文部分4. HTTP响应4.1 HTTP状态码4.2 其他部分总结前言 本篇文章介绍HTTP的基本结构。 1. 概念 HTTP全称为超文本传输协议,是一…

CVPR优秀论文 | DashGaussian:在200秒内优化三维高斯点绘制

本文选自gongzhonghao【图灵学术SCI论文辅导】关注我们,掌握更多顶会顶刊发文资讯1.导读1.1 论文基本信息论文标题:DashGaussian: Optimizing 3D Gaussian Splatting in 200 Seconds作者:Youyu Chen、Junjun Jiang、Kui Jiang、Xiao Tang、Zh…

知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例 采用PyTorch 内置函数F.kl_div的实现方式

知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例 采用PyTorch 内置函数F.kl_div的实现方式 flyfish kl_div 是 Kullback-Leibler Divergence的英文缩写。 其中,KL 对应提出该概念的两位学者(Kullback 和 Leibler)的姓氏首字母“div”是 div…

C语言基础_补充知识、数据类型转换、选择结构

0、补充知识: 原码、反码、补码的知识: 计算机中原码转补码,正数不变,负数是符号位不变,其余各位取反码加一。负数的补码转原码应该是补码减一然后再取反,为什么负数的补码转原码是补码取反然后再加一&…

ubuntu自动重启BUG排查指南

当 Ubuntu 系统意外重启时,排查原因需要从系统日志、硬件状态和定时任务等多个方面入手。 示例:通过日志检查重启原因 last -x | head | tac 此命令显示最近的关机和重启记录。如果记录中包含 shutdown 或 crash,则可能是人为操作或系统故障导…

2. JS 有哪些数据类型

总结 基础类型(7 种):number, string, boolean, null, undefined, symbol, bigint引用类型(对象及其子类):object, array, function, date, regexp, map, set 等 判断方式推荐: 基础类型&#x…

pipeline方法关系抽取--课堂笔记

Pipeline方法课堂笔记 一、Pipeline方法原理 pipeline方法是指在实体识别已经完成的基础上再进行实体之间关系的抽取. pipeline方法流程: 先对输入的句子进行实体抽取,将识别出的实体分别组合;然后再进行关系分类. 注意:这两个子过…

linux系统离线环境安装clickhouse客户端

1、下载离线安装包: 方式1:网站直接下载 链接:https://packagecloud.io/altinity/clickhouse 注意要下载同一版本的四个包 方式2:夸克网盘分享 链接:https://pan.quark.cn/s/7e77e6a1bc5f 2、将本地下载的安装包上传…

GPT-5的诞生之痛:AI帝国的现实危机

目录 前言 一、“俄里翁”的陨落:一场梦碎的代际飞跃 二、扎克伯格的“抄家式”突袭 三、天才的诅咒:当AI聪明到无法与我们对话 四、烧钱的无底洞与微软的影子 结语:AI帝国的黄昏,还是黎明前的黑暗? &#x1f3a…