您的位置:首页 > 财经 > 产业 > 18款未成年禁用软件ap入口_公司网站开发计划书_线上培训_企业网站建设规划

18款未成年禁用软件ap入口_公司网站开发计划书_线上培训_企业网站建设规划

2024/12/27 8:08:37 来源:https://blog.csdn.net/2302_79677613/article/details/143374179  浏览:    关键词:18款未成年禁用软件ap入口_公司网站开发计划书_线上培训_企业网站建设规划
18款未成年禁用软件ap入口_公司网站开发计划书_线上培训_企业网站建设规划

文章目录

  • 方法一 : 指针数组
    • 注意
  • 方法二 :数组指针
    • 注意


方法一 : 指针数组

在这里插入图片描述

其中array是二级指针,

  1. 先给array分配内存,做为每一行的起点
  2. 再给每行的起点,array[i] 分配内存, 即分配列内存
void test()
{int row = 5, col = 5;int** array;// 分配一个指针数组,其中每个元素都将指向一行array = (int**)malloc(row * sizeof(int*));if (array == NULL) {// 处理内存分配失败的情况exit(1);}// 为每一行分配内存for (int i = 0; i < row; ++i) {array[i] = (int*)malloc(col * sizeof(int));printf("%p\n", array[i]);}/*********对这个二维数组赋值***********/array[1][1] = 1;   //和正常一样printf("%d", array[1][1]);
}

注意

这样分配的内存对各行的地址不连续
在这里插入图片描述
差值 1-2: 9570922722688 - 9570922722384 = 304 字节
差值 2-3: 9570922722384 - 9570922722816 = -432 字节
差值 3-4: 9570922722816 - 9570922722432 = 384 字节
差值 4-5: 9570922722432 - 9570922722352 = 80 字节

方法二 :数组指针

与法一相比,各行的地址是连续的

#include<stdio.h>
#include<malloc.h>
int main()
{//直接申请3行4列的二维数组指针int(*p)[4] = (int(*)[4])malloc(3 * 4 * sizeof(int)); for (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){printf("%p\n", &p[i][j]); //打印每一个变量的地址}}free(p); //用完之后,最后把p释放掉return 0;
}

注意

  1. 与法一相比各行的地址是连续的
  2. 申请内存时如 其中的强转类型 里不能填变量
    int(*)[x] 这样的写法错的
    int(*p)[4] = (int(*)[4])malloc(3 * 4 * sizeof(int));
    • 也就是说方法二不能满足希望申请不同大小内存的情况,因为申请内存时的强转部分里必须要是常量

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com