数组长度相关

数组最大可以申请多大长度

为什么在函数中定义一个数组和定义一个全局的数组可以申请的空间的大小不一样?


在函数中不能定义一个太大的数组,否则程序无法执行。

 

但是作为全局变量就可以。

 

数组是静态分配的空间,应该是在栈上,数组你想分配100万个元素的话,如果是char数组,占用的空间就是1M,如果这个值超过了允许的栈空间大小,肯定会出错的。

函数体内的数组存在于stack,函数体外的或者用static声明的数组存在于data,变量存储的内存空间不同,所以大小限制自然不同

#include<stdio.h>
#define N 100000000 //1亿
int arr[N];//   在堆上可以 

int main(int argc,char**argv)
{
    int b[N];//在程序栈上,要报段错误的,如果N在百万级别以下,还是可以得,也就是在栈上分配空间是有限的
    static int a[N];//在堆上,可以
    return 0;        

### 数组长度 在计算机编程中,“数组长度”是指一个数组所包含元素的数量。对于静态分配的数组,其大小是在声明时确定的;而对于动态创建的数组,则取决于运行期间实际分配的空间量或初始化时给定的数据项数目。 #### 获取数组长度的方式: ##### 静态数组 当你在一个程序中直接定义了一个固定大小数组时,比如: ```c++ int arr[] = {1, 2, 3, 4, 5}; ``` 在这种情况下,你可以通过计算数组名称加上 `sizeof()` 函数的结果除以单个元素占用内存字节数来得到该数组的实际长度: ```cpp size_t length = sizeof(arr) / sizeof(arr[0]); // 输出结果应为 5 ``` ##### 动态数组(例如C++中的向量vector) 如果是使用像STL库提供的容器如`std::vector<int>`这样的结构体存储一系列连续整数的话, 可以直接访问成员函数 `.size()`, 它会返回当前已存入元素个数作为返回值。 ```cpp std::vector<int> vec = {1, 2, 3, 4, 5}; size_t length = vec.size(); // 输出结果也应当是 5 ``` 此外,在某些高级语言里(Python、JavaScript等),还可以利用内置属性或者方法获取列表/数组长度信息,通常就是调用`.length` 或者 `len()` 等类似功能的操作符/函数获得相应结果。 需要注意的是,在传递指针形式表示数组的情况下,仅凭接收端无法得知原生数组的确切尺寸,除非同时传参告知其边界条件或者是采用特定编码规则让末端具备标识性的结束标志位(例如字符串常使用的'\0')。 总结来说,了解如何准确测量和操作各种类型的数组及其关联特性是非常重要的基础技能之一,尤其是在编写高效稳健的应用程序方面尤为重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值