C中如何定义长度为1000000的整型数组

int n[1000000];这样肯定是不行的,因为这样定义的数组用的是栈内存,系统默认值为最大1Mb,一个int型占4字节这样最大可以申请1024*1024/4=264144个,如果考虑到系统自身的占用最大值约为25000个。int *p=(int )malloc(1000000sizeof(int));,这样用的是堆内存,只要你内存有那么多的连续空间就可以;例子如下:

#include<stdio.h>
#include<malloc.h>

int main()
{
	int *p=(int *)malloc(1000000*sizeof(int));
	//int p[1000000];
	int i=0;
	for(;i<1000000;i++)
		printf("%d\n",p[i]=i);
                free(p);
	return 0;
}

通常用两个办法解决这个问题:
1.声明一个全局数组。就是在所有函数之外声明,如int a[1000000];就可以了。
2.在需要的函数中用malloc函数动态申请内存,如int *pt=(int *)malloc(sizeof(int)*1000000);就可以了。用完后要用free(pt);释放所申请的内存空间。

  • 21
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第九章 数组 9.1 理解数组 C语言数组是一个由若干同类型数据组成的集合,数组由连续的存储单元组成,最低地址对应于数组的第一个元素,最高地址对应于最后一个元素。 9.2 一维数组 9.2.1 一维数组定义 定义形式: 类型说明符 数组名[常量表达式] 类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义数组标识符。方括号的常量表达式表示数据元素的个数,也称为数组长度数组每个成员称为数组元素。 对于数组的说明: (1)类型说明符实际上是指数组元素的类型。 (2)数组名实际上就是第一个元素的地址,是一个常量。 (3)方括号常量表达式表示数组元素的个数,可以是符号常量。因为数组和一般变量的空间在编译阶段分配,而变量的值在运行时才获得,编译时并不知道变量的值,因此不能用变量定义数组的大小。 (4)数组占用空间大小的计算,可以用sizeof运算符。数组总字节数=sizeof(类型说明符)*数组长度=sizeof(数组名)。 9.2.2 一维数组引用 数组元素的的标识方法为数组名后跟下标。引用数组元素的一般形式为:数组名[下标]。下标只能为整型常量、整型变量、整型表达式。 每个数组元素和变量一样,可以进行读写、输入输出操作等。 数组定义的方括号给出的是数组长度,只能是常量。数组元素引用的下标是元素在数组位置的标识,可以是整型常量、整型变量、整型表达式。 注意: (1)使用具有N个元素的数组时,引用下标为0~N-1,第一个元素为数组名[0],最后一个元素为数组名[N-1]。数组名代表起始地址,下标代表从起始地址开始偏移几个元素,第一个元素偏移0,第N个元素偏移N-1,下标为N-1。 (2)引用数组元素下标越界时,运行并不报错(因为检查是否越界占用系统时间,C语言崇尚高效),但越界使用可能破坏其他数据。 (3)C语言只能单个的使用下标标识每个数组元素。 用循环语句输入、输出数组元素的值: int iArr[5]; for(i=0;i<5;i++) scanf("%d",&iArr;); for(i=0;i<5;i++) printf("%d",iArr[i]); 对元素分别赋值1,2,3,4,5 int iArr[5]; for(i=0;i<5;i++) iArr[i]=i+1; (4)数组定义后若不给元素赋值,则值由编译器指定无意义的数据。 9.2.3 一维数组初始化 给数组赋值有两种方法:赋值语句对数组元素逐个赋值,初始化赋值。初始化赋值指在数组定义时给数组元素赋予初值。 数组初始化是在编译阶段进行的,可以减少运行时间,提高效率。 初始化赋值的形式: 类型说明符 数组名[常量表达式]={值1,值2,···,值n}; 对数组初始化赋值的说明: (1)可以只给部分元素赋初值,当{}值的个数少于元素个数时,只给前面部分元素赋初值,未赋值的元素会赋予与数组元素类型相关的特定值,整型为0,浮点型为0.0,字符型为'\0'。 补充说明:字符'0'和'\0'区别: 字符'0':ASCII码为48,内存存放表示:00110000。 字符'\0' :ASCII码为0,表示一个字符串结束的标志。这是转义字符(整体视为一个字符)。由于内存存储字符,存储的是对应字符集的字符编码,所以内存的表现形式为00000000。 (2)只能给元素逐个赋值。如给5个元素全部赋初值1,要写成: int iA[5]={1,1,1,1,1}; (3)如果给元素全部赋值,可以不给出数组长度(即数组元素的个数)。 9.2.4 一维数组案例分析 例:把一个整数插入到已经按照从小到大顺序排好序的整型数组,使得整型数组依然有序。 【问题分析】
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值