ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【C语言】整型数组(Finish)

【C语言】整型数组(Finish) 分静态数组栈、动态数组堆malloc两种。1. 静态数组固定大小编译时确定长度方式1直接定义 // 定义长度为5的int数组5个元素a[0],a[1],a[2],a[3],a[4] int a[5]; 数组下标从0开始 a[5] 越界不能访问。 方式2定义同时初始化 // 全部初始化 int a[5] {1,2,3,4,5}; // 部分初始化没写的自动填0 int b[5] {10,20}; // b[0]10,b[1]20, b[2]b[3]b[4]0 // 不写长度由初始化内容自动推断大小 int c[] {1,3,5,7}; // 等价 int c[4] //注意不能用变量来指定静态数组大小标准C不支持变长数组VLA int n 5; int arr[n]; // 标准C错误考试不要这么写 #define MAXN 100 int arr[MAXN];//是对的2. 动态数组malloc运行时确定大小堆上#include stdio.h #include stdlib.h int main() { int n 5; int *arr (int *)malloc(sizeof(int) * n); // 赋值 for(int i0; in; i){ arr[i] i; } // 打印 for(int i0; in; i){ printf(%d , arr[i]); } free(arr); // 释放内存 arr NULL; return 0; } /* int n 5; int *arr (int*)malloc(sizeof(int) * n); - sizeof(int) 一个int占的字节 sizeof(int)*n 总共需要多少字节 - 返回值是 int* 指针把它当成数组用可以用 arr[i] 访问 - 使用完要释放 free(arr); arr NULL; */考点1. malloc返回 void* C语言强制转换为 int*2. 动态数组用完必须free否则内存泄漏3. 动态数组可以用变量n控制长度这是它最大优势。3. 举例说明比如先序数组int pre[] {1,2,4,5,3,6};// 求数组元素个数int n sizeof(pre)/sizeof(pre[0]);sizeof(pre) 是整个数组字节大小 sizeof(pre[0]) 是单个int字节相除得到元素数量。⚠️这个 sizeof 求长度只对静态数组有效如果是malloc出来的指针 int *arr sizeof(arr) 得到的是指针大小不能用来算数组长度快速对比
返回列表