尧图精选

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

🕒 发布时间:2026/10/2 21:34:09 📁 来源:尧图网络
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; // 同样可以[]访问
上一篇/下一篇内容由系统自动关联 返回资讯列表 →