C语言初阶—数组

news2024/11/17 21:32:00

        数组是一组相同类型元素的集合。

        在C99标准之前,数组的大小必须是常量或常量表达式。

        在C99标准之后,数组的大小可以是变量,可以支持变长数组,但变长数组不能初始化。

        不完全初始化,剩余的元素默认初始化为0 。

        数组访问操作符,下标引用操作符----> [ ]

        数组是使用下标来访问的,下标是从 0 开始的。

        数组的大小可以通过计算得到。

int arr[10] = {0};
int sz = sizeof(arr) / sizeof(arr[0]);

        数组在内存中是连续存放的。

#include <stdio.h>

int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for(i = 0;i <= sz - 1;i++)
		printf("arr[%d]的地址是%p\n",i,&arr[i]);
	return 0;
}

        二维数组的使用也是通过下标的方式。

        可以把二维数组理解为:一维数组的数组,即二维数组里每个元素都是一个一维数组。

#include <stdio.h>

int main()
{
	int arr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
	int i = 0;
	int j = 0;
	for(i = 0;i < 3;i++)
		for(j = 0;j < 4;j++)
			printf("arr[%d][%d]的地址是%p\n",i,j,&arr[i][j]);
	return 0;
}

        分析图上地址:二维数组在内存中也是连续存储的。

        数组传参的时候,形参有两种写法:

        1.数组

        2.指针

        数组名本质上是:数组首元素的地址,但是这个说法也不太准确,数组名确实能表示首元素的地址,但是有两个例外:

1.sizeof(数组名) ,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。

2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。

#include <stdio.h>

int main()
{
	int arr[10] = {10,2,3,14,5,6,17,8,9,1};
	int n = 0;
	printf("%p\n",arr);
	printf("%p\n",arr + 1);
	printf("%p\n",&arr[0]);
	printf("%p\n",&arr[0] + 1);
	printf("%p\n",&arr);
	printf("%p\n",&arr + 1);
	n = sizeof(arr);
	printf("%d\n",n);
	return 0;
}

        二维数组的数组名也表示二维数组首元素的地址,二维数组首元素相当于第一行元素,也就是一个一维数组,第一行元素4个,数组元素是 int 类型,一共是4 * 4 = 16字节。

#include <stdio.h>

int main()
{
	int arr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
	int n = 0;
	int row = 0;
	int col = 0;
	printf("%p\n",arr);
	printf("%p\n",arr + 1);
	printf("%p\n",&arr[0]);
	printf("%p\n",&arr[0] + 1);
	printf("%p\n",&arr);
	printf("%p\n",&arr + 1);
	n = sizeof(arr);
	row = sizeof(arr) / sizeof(arr[0]);//行
	col = sizeof(arr[0]) / sizeof(arr[0][0]);//列
	printf("%d\n",n);
	printf("%d\n",row);
	printf("%d\n",col);
	return 0;
}

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

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

相关文章

【Unity】Node.js安装与配置环境

引言 我们在使用unity开发的时候&#xff0c;有时候会使用一些辅助工具。 Node.js就是开发中&#xff0c;经常会遇到的一款软件。 1.下载Node.js 下载地址&#xff1a;https://nodejs.org/en 2.安装Node.js ①点击直接点击Next下一步 ②把协议勾上&#xff0c;继续点击…

帝恩思SSL证书助力工业领域数据安全保护能力,助力企业高质量发展

为加快提升工业领域数据安全保护能力&#xff0c;助力工业高质量发展&#xff0c;夯实新型工业化发展的安全基石&#xff0c;2024年2月26日&#xff0c;工业和信息化部发布了《工业领域数据安全能力提升实施方案&#xff08;2024-2026年&#xff09;》。 在方案中提出以落实企…

Nodejs 第四十四章(redis基本使用)

字符串的操作 SET key value [NX|XX] [EX seconds] [PX milliseconds] [GET]key&#xff1a;要设置的键名。value&#xff1a;要设置的值。NX&#xff1a;可选参数&#xff0c;表示只在键不存在时才设置值。XX&#xff1a;可选参数&#xff0c;表示只在键已经存在时才设置值。…

七款顶级API测试工具

在现代软件开发中&#xff0c;API接口已成为不可或缺的核心组件。鉴于API缺乏直观的图形用户界面&#xff08;GUI&#xff09;&#xff0c;使得直接对接口进行测试变得困难&#xff0c;对于前后端开发者而言&#xff0c;选择一套高效且实用的工具来测试API接口&#xff0c;从而…

g2o -- curve_fit代码解析

概述 本文介绍通过g2o框架&#xff0c;优化点和曲线的匹配&#xff08;曲线拟合&#xff09;。曲线的公式如下所示&#xff1a; 它有三个参数&#xff1a;a, b, lamba。 代码解析 自定义顶点 /*** \brief the params, a, b, and lambda for a * exp(-lambda * t) b*/ clas…

【AWS Credit】AWS服务抵扣金额兑换操作步骤演示说明

AWS 服务抵扣金额可应用于账单&#xff0c;帮助支付与符合条件的服务相关联的成本。服务抵扣金额在用尽或过期之前均可应用。 文章目录 AWS Credit 使用说明1.登录到AWS控制台2.导航至“账单和成本管理”3.点击“积分”&#xff0c;选择“兑换积分”4.输入优惠代码及安全代码5.…

【MySQL系列】在 MacOS 上安装 MySQL

在 MacOS 上有两种方式安装 MySQL 服务器&#xff1a;通过 brew 安装和通过安装包安装。 文章目录 1、通过 brew 安装 MySQL1.1、安装 MySQL1.2、启动 MySQL 服务器1.3、配置 MySQL 服务器1.4、MySQL 服务器管理命令 2、通过安装包安装 MySQL2.1、下载安装包2.2、安装 MySQL2.3…

demo型xss初级靶场

一、环境 XSS Game - Ma Spaghet! | PwnFunction 二、开始闯关 第一关 看看代码 试一下直接写 明显进来了为什么不执行看看官方文档吧 你不执行那我就更改单标签去使用呗 ?somebody<img%20src1%20onerror"alert(1)"> 防御&#xff1a; innerText 第二关…

Vue中如何创建自定义指令?

在Vue中&#xff0c;除了内置的指令外&#xff0c;我们还可以自定义指令来扩展Vue的功能。自定义指令是Vue的一个重要特性&#xff0c;它使得我们可以在DOM元素上添加特定的行为。下面我们就来看看如何在Vue中创建自定义指令。 首先&#xff0c;让我们先了解一下自定义指令的基…

2024.03.02蓝桥云课笔记

1.scanf与printf取消分隔符的限制方法 示例代码&#xff1a; int main() { char s[10];scanf("%d[^\n]",s);printf("%s",s);return 0; } 运行&#xff1a; 输入&#xff1a;Hello World 输出&#xff1a;Hello World 注&#xff1a;其中[]中是一个正则…

C语言:指针(二)

目录 1.数组名的理解2.使用指针访问数组3.一维数组传参的本质4.二级指针5.指针数组6.字符指针变量7.数组指针变量8.二维数组传参的本质9.函数指针变量10.函数指针数组11.回调函数12.qsort函数13.使用回调函数模拟实现qsort函数 1.数组名的理解 int main() {int arr[] { 1,2,3…

英伟达:通用人工智能最快在五年内通过人类测试能力 | 百能云芯

英伟达&#xff08;NVIDIA&#xff09;的CEO黄仁勋在斯坦福经济政策研究所峰会上发表讲话&#xff0c;表示他预计通用人工智能&#xff08;AGI&#xff09;最快将在五年内问世。通用人工智能是指能够像人类一样学习、推理、解决复杂问题并独立做出决策的人工智能。这一表态引起…

从“茅五泸”到“非茅即五”,泸州老窖是怎么把自己跌出前三的?

文&#xff5c;琥珀食酒社 作者 | 宏一 春节的高端局酒桌上&#xff0c;“非茅即五”是很多人都会做的选择。前者是酱香型白酒的天花板&#xff0c;但后者却是浓香型白酒的“后来者”。 浓香型白酒的“鼻祖”&#xff0c;实际是坐拥国宝级窖池的泸州老窖&#xff0c;其上市时…

开源项目:智能化图像分类技术在新能源发电监控中的应用与实践

一、引言 在当今世界&#xff0c;能源的转型和升级是推动社会可持续发展的关键因素。随着技术的进步&#xff0c;新能源发电逐渐成为能源结构调整的重要力量。在众多发电方式中&#xff0c;新能源发电技术如风力、太阳能等因其清洁、可再生的特性而备受青睐。然而&#xff0c;…

vue入门相关内容

0.vue项目创建 01.vscode创建vue项目以及常见问题汇总 02.项目结构解读 03.启动项目直接访问自定义功能页面非APP.vue 1.事件修饰符 1.1事件修饰符stop 1.2事件修饰符capture 1.3事件修饰符self 1.4事件修…

Vue3中使用ffmpeg.wasm进行转码

一、安装方法 1.1 使用yarn进行安装 yarn add ffmpeg/ffmpeg ffmpeg/core1.2 安装版本 注意安装版本需在0.12.0以上版本才可以使用下面代码&#xff08;目前更新到0.12.10&#xff09;&#xff0c;之前的版本代码使用方法有所不同&#xff08;0.12.10之后的版本也可能会有变动…

【AIGC】如何提高Prompt准确度

前言 随着人工智能的迅猛进展&#xff0c;AIGC&#xff08;通用人工智能聊天工具&#xff09;已成为多个行业中不可或缺的自然语言处理技术。Prompt作为AIGC系统的一项关键功能&#xff0c;在工具的有效运作中发挥了举足轻重的作用。本篇文章将深入探讨Prompt与AIGC之间的紧密…

2024智能遥控器行业市场规模及技术水平分析

智能遥控器&#xff0c;主要是由集成电路板和用来生产不同讯息的按钮所组成&#xff0c;内装有一个中央处理器芯片&#xff0c;芯片在制造时就将设备各种菜单码值信息输入其中&#xff0c;遥控发射器只要发出与之对应的密码就可以实现对设备的控制。无线遥控技术原理就是发射机…

内存飙高问题如何排查?

目录 1、查看日志 2、查看GC情况 3、分析堆内存对象占用情况 4、分析堆内存快照文件 内存飙高如果发生在java进程上&#xff0c;一般情况是因为创建了大量对象导致&#xff0c;持续飙高说明垃圾回收跟不上对象创建的速度&#xff0c;或者内存泄漏导致对象无法被回收&#x…

案例介绍:汽车售后服务网络构建与信息抽取技术应用(开源)

一、引言 在当今竞争激烈的汽车行业中&#xff0c;售后服务的质量已成为品牌成功的关键因素之一。作为一位经验丰富的项目经理&#xff0c;我曾参与构建一个全面的汽车售后服务网络&#xff0c;旨在为客户提供无缝的维修、保养和配件更换服务。这个项目的核心目标是通过高效的…