zoukankan      html  css  js  c++  java
  • 二位数组,malloc

    /****************************************************************************************************
     数组和指针参数是如何被编译器修改的.
     "数组名被改写成一个指针参数"规则并不是递归定义的.数组的数组会被改写为"数组的指针",而不是"指针的指针"
    ****************************************************************************************************
                  实     参                                所匹配的形式参数
    数组的数组     char c[8][10];                    char(*)[10];             数组指针
    指针数组       char *c[15];                      char **c;                指针的指针
    数组指针(行指针)    char (*c)[64];                char (*c)[64];           不改变
    指针的指针          char **c;                     char **c;                不改变      
                                                                                                        
                                                                                                        
     正如上所述, 因此在main()中的参数才能看到 **argv这样的参数,因为*argv[]是指针数组,在编译时会被编译器改写
     成一个指向指针的指针.如果argv是一个数组的数组即(char argv[10][15])它将被编译器改写成char (*argv[15]),
     而不是 char **argv .  

    Array=(int **)malloc(nrows*sizeof(int *));//??
    Array本质上也是一个指针,只不过它指向指针,是“指针的指针”。
    这里给他分配空间,使他可以保存nrows个元素,每个元素都是一个指针int*
    这样分配了之后,Array[0]到Array[nrows-1]这里面就保存了nrows个指针,只不过都是野指针,接下来就要让这些野指针变成指向合法地址的指针。

    for(i=0;i<nrows;i++)
      Array[i]=(int *)malloc(ncolumns*sizeof(int));//??
    依次给Array[0]到Array[nrows-1]这nrows个指针分配空间,每一个都可以保存ncolumns个整数。
  • 相关阅读:
    最长公共前缀
    罗马数字转整数
    回文数
    整数反转
    Linux内核设计与实现——进程管理
    技术派-常用的一些VS相关的宏名
    假如面试3道小学数学题,你可否会?
    技术派-不用sqrt手工计算平方根
    观察者-学历差距造成的差距有多大
    10G文件如何对里面单词出现排序
  • 原文地址:https://www.cnblogs.com/shuimo/p/2648649.html
Copyright © 2011-2022 走看看