文章首发及后续更新:
    
     http://mwhls.top/619.html
    
    
    新的更新内容请到
    
     mwhls.top
    
    查看。
    
    如果没有图片请到上方的文章首发页面查看。
   
被整型数组的sizeof误导,我二级指针的空间分配一直出现问题,今天(和今天的明天)终于解决了!
还有如何将字符串数组的传参问题!
我!
墙!
啊!
    概念
   
    指针用来指向地址,例如
    
     int *p = #
    
    表示用 int型的p指针 存放 num的地址。
   
    而二级指针,
    
     int *q = &p;
    
    表示用 q 存放 p 的地址。
    
    注意这里的&p,如果写成p,那么只是q依然只是一级指针,将指向num的地址。
    
    此时的等价关系:
   
p == #
*p == num;
q == &p;
*q == p;
*q == p == #
**q == *p == num;
    函数传参
   
    想要将一个二维字符串数组传入函数,那么在定义时,需用格式:
    
     char *strs[] = {"str1", "str2"};
    
中括号[]内不用写大小,就如同一维数组一样。
    对于一个传入二级指针的函数
    
     char *putFirstChar(char **charArray);
    
    在传参时,直接使用变量名作为实参即可,即
    
     putFirstChar(strs);
    
    这样,在函数内部调用时,就可以使用
    
     strs[0][0];
    
    形式了。
   
    我试过使用
    
     char **strs1, strs2[3][3], strs3[3][];
    
    ,三种都不行。
   
    长度获取
   
    一维整型数组
    
     int intArray[10] = {1, 2};
    
    ,可以使用
    
    
     int arraySize = sizeof(intArray)/sizeof(int);
    
    来获取,此时的
    
    
     sizeof(intArray)/sizeof(int) == 10;
    
    ,而不等于2.
   
    但一维字符串数组
    
     char charArray[10] = "12";
    
    ,需要用
    
    
     strlen(charArray)
    
    来获取,此时长度为2,而不等于10。
   
    
     int i = strlen(charArray);
    
    函数的效果和
    
    
     for(int i=0; charArray[i]!='\0'; i++);
    
    相同(在for内定义变量可能出错,出错请在for外定义i变量)。
   
    一级字符串指针的空间分配
   
    对于
    
     char *charArray;
    
    的空间分配,使用
    
    
     charArray = (char*)malloc(sizeof(char)*arrayLength);
    
    ,其中的arrayLength为整型变量,表示char空间的个数。
   
    重新分配时,使用
    
    
     charArray = (char*)realloc(charArray, (strlen(charArray)+1+addLength) * sizeof(char));
    
    
    函数,表示给charArray变量增加addLength长度的空间。
   
    这里的长度用
    
     strlen(charArray)+1
    
    ,因为字符串的结束符
    
     '\0'
    
    也占据空间,这里的长度不能用sizeof()来获取,它无法获取char类型数组的大小。
   
    二级字符串指针的空间分配
   
    
     这里的内存空间分配好可恶,好可恶好可恶!
     
     我有的题分配了空间,一直栈溢出,气死了,我都把倍数调到一百了明明!
     
     但是今天做题突然就正常分配了,好气哇!
    
    
    
     使用到这个分配的在后面第三篇,看这里
     
      LeetCode-17-电话号码组合(C)
     
     。
    
按下面的格式进行内存分配即可,分配完后,char2DArray指针可以当做二维数组来用,即使用char2DArray[0][0]这种方式进行赋值。
char **char2DArray;
int sizeIn1, sizeIn2, i;
char2DArray = (char**)malloc(sizeof(char*) * sizeIn1);
for(i=0;  i<sizeIn2;  i++){
  *(char2DArray + i) = (char*)malloc(sizeof(char) * sizeIn2);
}此外,这种分配方式是通用的,int型也可以,只要将代码内的char全部替换成int就行了。
 
