数组的元素有上界吗?


#include<iostream>
using namespace ::std;
int main()
{
    //int* p1 = (c*)malloc(0);
    char* p = new char[0xfffffffful+1];//这不会开辟空间,就跟0一样。
    delete[] p;
    return 0;
}

无符号整数0xffffffff加1之后的结果是0了

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/998857
  • 你也可以参考下这篇文章:如何计算数组元素个数?
  • 除此之外, 这篇博客: 扫雷?拿来吧你!中的 游戏主体 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • void game()
    {
    	printf("\n");
    	//没排查的地方全放成 * 所以用字符数组
    	char mine[ROWS][COLS] = { 0 };
    	char show[ROWS][COLS] = { 0 };
    	//初始化一下棋盘
    	InitBoard(mine, ROWS, COLS, '0');//先把棋盘初始化为 0 
    	InitBoard(show, ROWS, COLS, '*');//将展示的数组初始化为 * 
    	//布置雷
    	SetMine(mine, ROW, COL);//mine 数组放雷 放在 9*9 的位置里面
    	//打印棋盘
    	//DisplayBoard(mine, ROW, COL);//打印出 9*9 
    	//printf("\n");
    	DisplayBoard(show, ROW, COL);
    	printf("\n");
    	//排查雷 把排查产生的信息填充到show数组里面
    	FindMine(mine, show, ROW, COL);//因为最后操作的 还是 9*9
    }
    
  • 您还可以看一下 千锋老师的什么是云计算? 课程中的 杨哥知识普及小课堂之 什么是云计算?小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    数组的元素是有上限的,因为数组在内存中占据一段连续的空间,而内存的容量是有限的,所以数组的长度也是有限的。具体来说,数组的长度受到以下因素的限制:

    1. 内存空间的大小:数组的长度不能超过内存空间的大小,否则可能会出现内存溢出的情况。

    2. 数据类型的大小:不同的数据类型占用的内存大小不同,所以不同的数据类型所组成的数组长度也不同。

    3. 操作系统和编译器的限制:不同的操作系统和编译器对数组长度的限制也不同,一般会有一个最大长度的限制。

    为了避免数组长度超出限制,可以采用以下几种方法:

    1. 合理地设计程序,避免使用过大的数组或者使用过多的数组。

    2. 使用动态数组:动态数组是一种可以在运行时动态分配内存的数组,长度不受静态数组的限制,可以根据需要动态地分配和释放内存。

    3. 使用链表等数据结构:链表等数据结构不需要连续的内存空间,可以根据需要动态分配和释放内存,长度不受数组的限制。

    以下是使用动态数组的示例代码:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        // 动态分配一个长度为10的整型数组
        int* arr = new int[10];
    
        // 使用数组
        for (int i = 0; i < 10; i++) {
            arr[i] = i;
            cout << arr[i] << " ";
        }
        cout << endl;
    
        // 释放数组所占用的内存
        delete[] arr;
    
        return 0;
    }
    

    以上代码中,使用了new运算符动态分配了一个长度为10的整型数组。使用数组后,需要使用delete运算符释放数组所占用的内存。