数组是一块连续的内存空间
数组的首地址和数组的地址相同
静态内存和动态内存
静态内存是编译执行后系统自动分配,由系统自动释放,静态内存是栈分配的。
动态内存是开发者手动分配的,是堆分配的。
一下打印三次都是100:
对上述代码分析如下:
扩展数组
#include <iostream>
int main() {
int length;
printf("您输入你要数组的长度: ");
scanf("%d", &length); // 输入一个长度
printf("您输入数组长度为:%d ", length);
int* iArray = (int *)malloc(sizeof(int) * length);
int i;
for (i = 0; i < length; i++) {
printf("请输入iArray[%d]的值: ", i);
scanf("%d", iArray + i);
}
// 扩展数组
int extentLen;
printf("您输入你要扩展数组的长度: ");
scanf("%d", &extentLen); // 输入一个长度
printf("您输入的扩展数组长度为:%d ", extentLen);
// 重新分配空间
iArray = (int *)realloc(iArray, sizeof(int) * (length + extentLen));
for (i = length; i < length + extentLen; i++) {
printf("请输入iArray[%d]的值: ", i);
scanf("%d", iArray + i);
}
// 打印数组
for (i = 0; i < length + extentLen; i++) {
printf("iArray[%d]==%d ", i, *(iArray + i));
}
return 0;
}
运行:
您输入你要数组的长度:
1
您输入数组长度为:1
请输入iArray[0]的值:
11
您输入你要扩展数组的长度:
2
您输入的扩展数组长度为:2
请输入iArray[1]的值:
22
请输入iArray[2]的值:
33
iArray[0]==11
iArray[1]==22
iArray[2]==33