资讯动态

【C语言】指针型数组(Finish)

发布时间:2026/10/2 21:34:05 来源:尧图企业网站定制
malloc 分配出来的 int* 指针完全能用 [] 下标访问。示例代码#include stdio.h #include stdlib.h int main() { // 分配能存放5个int的内存 int *arr (int *)malloc(5 * sizeof(int)); if(arr NULL) { perror(malloc fail); return 1; } // 用[]赋值、读取 arr[0] 10; arr[1] 20; arr[2] 30; for(int i 0; i 5; i) { printf(%d , arr[i]); } free(arr); // 用完一定要释放 return 0; }arr[i] 等价于 *(arr i)arr 是指向这块连续内存首地址的指针指针加减偏移 [] 只是语法糖。总结1. malloc分配的是连续内存所以下标访问合法2. 下标不能越界比如分配5个int不能访问 arr[5] 3. int* arr 只是指针不是数组类型不能用 sizeof(arr) 获取数组总大小得到的是指针大小4. 用完必须 free(arr) 防止内存泄漏。int a[5]; // 栈上数组数组类型 int *p malloc(5*sizeof(int)); // 堆上指针类型 a[0]; // ✔ p[0]; // ✔ 完全一样拓展二维mallocint **p malloc(3 * sizeof(int*)); for(int i0;i3;i) p[i] malloc(4 * sizeof(int)); p[1][2] 100; // 同样可以[]访问

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑