C语言 数组

1. 数组的地址

1.1 一维数组的地址

int a[5];

(1)

&a[0]第0个元素的地址
a第0个元素的地址
&a整个一维数组的地址

(2)&a[0] == a == &a;  

(3)

&a[0] + 1跳过一个数组元素
a + 1跳过一个数组元素
&a + 1跳过整个数组

1.2 二维数组的地址

int a[2][3];

(1)

&a[0][0]0行0列元素的地址
a[0]0行一维数组的地址
a0行一维数组的地址
&a整个二维数组的地址

(2)&a[0][0] == a[0] == a == &a;

(3)

&a[0][0] + 1跳过一个数组元素
a[0] + 1跳过一个数组元素
&a[0] + 1跳过一个一维数组
a + 1跳过一个一维数组
&a + 1跳过整个数组

2. 二维数组行列数求法

示例:

int a[3][4] = { 1, 2, 3 };       // 定义二维数组
/**********************************************************************/
sizeof(a) / sizeof(a[0][0]);     // 元素个数 = 数组大小 / 一个元素的大小
sizeof(a) / sizeof(a[0]);        // 行数 = 数组大小 / 一行的大小
sizeof(a[0]) / sizeof(a[0][0]);  // 列数 = 一行的大小 / 一个元素的大小

3. 字符数组

char a[5] = { 'a', 'b', 'c', 'd', 'e' };  // 普通字符数组
printf("%s\n", a);                        // 乱码,因为没有'\0'结束标志char b[5] = { 'a', 'b', 'c', 'd', '\0' }; // 字符数组中含有'\0',就是字符串,与下面一行等价
char c[5] = "abcd";                       // 字符串,存的是"abcd\0"

3.1 从键盘读取字符串

3.1.1 scanf

char num[5] = "";
scanf("%s", num);
printf("%s", num);

运行结果:

输入“12 12”,则只会输出“12”。

scanf缺点:

(1)不会读入空格、'\n',而是停止读取;

(2)存放读取字符的空间不足,仍会继续将字符读入后面的内存空间,造成内存污染;(可使用scanf_s避免该问题,如下)

char num[5] = "";
scanf_s("%s", num, 5);  // 第三个参数限制只能读入5个字符
printf("%s", num);

注意:本例中scanf_s第3个参数“5”表示num字符数组能存5个字符,包括末尾自动添加的‘\0’,因此人为输入的最大字符数为4.


3.1.2 gets

char num[5] = "";
gets(num);
printf("%s", num);

运行结果:

优点:

(1)会读入空格,但不会读入‘\n’,遇到'\n'会停止读取;

缺点:

(1)存放读取字符的空间不足,仍会继续将字符读入后面的内存空间,造成内存污染;(可使用scanf_s避免该问题,如下)

char a[5] = "";
gets_s(a, 5);     // 第三个参数限制只能读入5个字符
printf("%s", a);

注意:gets、gets_s也会在末尾自动添加'\0'。


3.1.3 fgets

fgets是库函数,从键盘读取一个字符串;

char a[5] = "";
fgets(a, sizeof(a), stdin);
printf("%s", a);

该示例中,fgets将字符串从标准输入读入a中,最大读入sizeof(a)-1个,末尾自动添加'\0'.

优点:

(1)会读入空格、'\n';但读入'\n'后会停止读取;

(2)指定读入的字符个数,避免内存污染问题。


3.2 字符串的输出

3.2.1 puts

char buf[1024] = "Hello World";
puts(buf);          // 最后会输出换行

3.2.2 fputs

char buf[1024] = "Hello World";
fputs(buf, stdout);   // 不会输出换行

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

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

相关文章

Gradio库中的Model3D模块:实时上传和展示3D模型

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

如何与ChatGPT愉快地聊天

原文链接:https://mp.weixin.qq.com/s/ui-O4CnT_W51_zqW4krtcQ 人工智能的发展已经走到了一个新的阶段,在这个阶段,人工智能可以像人一样与我们进行深度的文本交互。其中,OpenAI的ChatGPT是一个具有代表性的模型。然而&#xff0…

chatGPT之100个例子-从体验到精通

简介 本博文演示了100个chatGPT在各行各业的使用例子,全部看完有助于培养chatGPT解决问题的思维。 在人工智能时代,智能软件并不会淘汰人类,淘汰人类的是会使用人工智能的人! 我们直接使用openAI官方chatGPT,生动演示了chatGPT的一些妙用! 请仔细看完,一定会有收获! 每…

构建工具——webpack、vite

文章目录 构建工具Webpack使用步骤配置文件(webpack.config.js)插件(plugin) ViteVite 也是前端的构建工具使用命令构建配置文件:vite.config.js 构建工具 当我们习惯了在 node 中编写代码的方式后,在回到…

Jenkins 配置用户角色和权限

1、配置条件: 1)已安装Jenkins,当前案例使用版本:2.319.3 2)已成功进入Jenkins,并新建用户:dev_java 2、安装插件【系统管理-插件管理-搜索-可选插件】:Role-based Authoriz…

多元分类预测 | Matlab基于麻雀算法优化深度置信网络(SSA-DBN)的分类预测,多特征输入模型,SSA-DBN分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab基于麻雀算法优化深度置信网络(SSA-DBN)的分类预测,多特征输入模型,SSA-DBN分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 7 日论文合集)

文章目录 一、检测相关(5篇)1.1 Contextual Affinity Distillation for Image Anomaly Detection1.2 Noise-to-Norm Reconstruction for Industrial Anomaly Detection and Localization1.3 MMNet: Multi-Collaboration and Multi-Supervision Network for Sequential Deepfake…

深度学习笔记之Transformer(四)铺垫:LayerNormalization

深度学习笔记之Transformer——LayerNormalization 引言回顾:批标准化问题描述问题处理 层标准化批标准化无法处理的问题 引言 在介绍 Transformer \text{Transformer} Transformer模型架构之前,首先介绍 Transformer \text{Transformer} Transformer的…

YOLOV5-Lite轻量化部署与训练

文章目录 前言项目下载项目运行自定义数据集训练使用LabelImg标注制作数据集划分训练文件生成标签聚合操作辅助脚本需要运行的脚本 开始训练 总结 前言 没啥意思,很简单,需要实现一个目标检测,但是,不能占用太多运算资源&#xf…

【javaEE面试题(六)wait 和 sleep 的对比(面试题)】

7.4 wait 和 sleep 的对比(面试题) 其实理论上 wait 和 sleep 完全是没有可比性的,因为一个是用于线程之间的通信的,一个是让线程阻塞一段时间, 唯一的相同点就是都可以让线程放弃执行一段时间 当然为了面试的目的&…

二、C语言算法题期末题

一、枚举题 1、用1元5角人民币兑换5分、2分、1分的硬币&#xff08;每种都要有&#xff09;共100枚&#xff0c;有多少种方案,每种方案的具体情况? #include<stdio.h> int main(){int money150; //1元5角等于150分int count0; //记录数量for(int i1;i<99;i){ …

计算机通信地址【图解TCP/IP(笔记六)】

文章目录 地址地址的唯一性地址的层次性 地址 通信传输中&#xff0c;发送端和接收端可以被视为通信主体。它们都能由一个所谓“地址”的信息加以标识出来。当人们使用电话时&#xff0c;电话号码就相当于“地址”。当人们选择写信时&#xff0c;通信地址加上姓名就相当于“地…