【每日C/C++问题】

server/2024/11/28 19:27:40/

一、C/C++中数组定义和初始化的方式有哪些?

int arr[100]; // 定义了数组arr,并未对数组进行初始化int arr[100] = {1, 2}; // 定义并初始化了数组arr前两个元素,其他元素为0int arr[3] = {1, 2, 3}; // 定义并初始化了数组arr所有元素int arr[] = {1, 2, 3}; // 不指定大小,根据初始化值确定数组大小int *arr = new int[100]; //定义了数组arr,并未对数组进行初始化,不用时需要用delete [] 释放int *arr = new int[100](); //定义了数组arr,默认初始化为0,不用时需要delete [] arr
// 使用循环初始化数组元素
int arr[5];
for (int i = 0; i < 5; i++) {arr[i] = i;
}
数组元素为1,2,3,4,5

二、数组名字有什么含义?

1. 数组名代表数组首元素的地址:

int a[3], *p = a; // a表示数组首元素的地址//此时 p + 1 与 a + 1 等价都指向数组的第二个元素

2. 在一些特殊情况下,如sizeof中数组名代表整个数组

// x64   指针变量(地址)占8个字节
// x86   指针变量(地址)占4个字节
//该示例编译环境为 x86
#include<iostream>
using namespace std;
#include <string>
int main() {int a[5] = { 1,2,3,4,5 };cout << sizeof(a) << endl; // a代表整个数组cout << sizeof(a + 0) << endl; // a进行运算代表数组首元素地址cout << sizeof(*a) << endl; // a代表数组首元素地址,*a 为 a[0]cout << sizeof(a + 1) << endl; // a进行运算代表数组首元素地址,a + 1 代表a[1]的地址 cout << sizeof(a[1]) << endl; // a[1]为int类型变量占四个字节cout << sizeof(&a) << endl; // &a 在数值上与 a 和 &a[0] 相等,&a 数值上等于整个数组的起始位置地址,含义上代表整个数组所占内存的大小,因为它的进阶单位是整个数组的字节长度,(&a + 1)等于的是数组结束之后的下一段的起始位置地址。cout << sizeof(*&a) << endl; // * 和 & 抵消掉 a 代表整个数组cout << sizeof(&a + 1) << endl; // (&a + 1)等于的是数组结束之后的下一段的起始位置地址。cout << sizeof(&a[0]) << endl; // x86   指针变量(地址)占4个字节cout << sizeof(&a[0] + 1) << endl; // x86   指针变量(地址)占4个字节,&a[0] + 1 表示的是 a[1] 的地址return 0;
}

         &a 在数值上与 a 和 &a[0] 相等,&a 数值上等于整个数组的起始位置地址,含义上代表整个数组所占内存的大小,因为它的进阶单位是整个数组的字节长度,(&a + 1)等于的是数组结束之后的下一段的起始位置地址。

输出

20
4
4
4
4
4
20
4
4
4


http://www.ppmy.cn/server/137686.html

相关文章

SpringBoot集成ELK收集日志管理

ELK集成是没有代码侵入的&#xff0c;主要是吃服务器内存&#xff0c;只需要部署启动这三个服务&#xff0c;然后项目的资源日志配置指定日志输出到 logstash服务器就可以了。 1、好处就是开发人员不用依赖服务器来定位异常了&#xff0c;服务器一般需要借助VPN登录&#xff0…

我在命令行下学日语

同一个动作重复 300 遍&#xff0c;肌肉就会有记忆&#xff0c;重复 600 遍&#xff0c;脊柱就会有记忆&#xff0c;学完五十音图不熟练&#xff0c;经常遗忘或者要好几秒才想得起来一个怎么办&#xff1f;没关系&#xff0c;我做了个命令行下的小游戏 KanaQuiz 来帮助你记忆&a…

ubuntu启动慢,如何看启动耗时分布

ubuntu启动慢&#xff0c;如何看启动耗时分布 在Ubuntu系统中&#xff0c;如果您想检查启动过程中每个过程的耗时分布&#xff0c;可以使用systemd-analyze工具。这个工具可以帮助您诊断启动过程中哪些服务或步骤占用了较多时间。 查看总体启动时间&#xff1a; 要查看系统启动…

Angular中ChangeDetectorRef.detectChanges是如何实现的,对比vue种的nextTick有何不同

ChangeDetectorRef.detectChanges的介绍&#xff1a; ChangeDetectorRef.detectChanges() 是 Angular 中用于手动触发变更检测的方法。它的主要作用是立即检查组件的视图和数据绑定&#xff0c;更新界面以反映模型数据的变化。detectChanges() 是通过 Angular 的变更检测机制来…

Python基础保姆级讲解(3)

条件语句 1.if if condition: # 当条件为真时执行这里的代码,否则不执行这里 year1993 if year%40:print("year能被4整除")2.if-else if condition: # 当条件为真时执行这里的代码 else: # 如果前面的条件都为假&#xff0c;执行这里的代码 year1993 if yea…

优化低代码开发平台用户体验:功能树导航设计探讨

功能树的构建与应用在当今快速发展的软件开发环境中&#xff0c;低代码开发平台因其简化开发流程和提高开发效率而受到广泛关注。低代码开发平台中的导航功能通常以功能树的形式呈现&#xff0c;帮助用户快速找到所需的功能模块。功能树是一种层次结构&#xff0c;展示了各个功…

matplotlilb画图

matplotlib matplotlib 是 Python 中一个强大而灵活的绘图库&#xff0c;广泛用于数据可视化。它允许创建多种类型的图表&#xff0c;包括线图、散点图、柱状图、饼图、直方图等。matplotlib 的基础是 pyplot 模块&#xff0c;它为绘图提供了简单的接口。这里详细讲解一下 mat…

npm入门教程13:npm workspace功能

一、npm Workspace概述 npm Workspace允许开发者在单个顶级根包下管理多个npm包&#xff0c;这些包可以相互依赖且共享相同的node_modules目录。这一功能极大地简化了多包管理的复杂性&#xff0c;提高了开发效率。 二、npm Workspace的配置 要启用npm Workspace功能&#x…