这个str[j][i]是怎么做到的,没看懂

img


如图,函数参数写的是char** strs,而不是写char strs[][n],既然不知道每个字符串长度为多少,系统要怎么知道strs[j][i]是哪个值呢?


char * longestCommonPrefix(char ** strs, int strsSize){
    if(strsSize == 0){
        return NULL;
    }
    for(int i = 0 ;i < strlen(strs[0]);i++){
        for(int j = 0 ; j < strsSize;j++){
            if(strs[j][i] != strs[0][i]){
                    strs[0][i] ='\0';
                    return strs[0];
            }
        }
    }
    return strs[0]; 
}

char** strs 和 char strs[][n] 的作用是等价的,即便写为 char strs[][n],也不知道每个字符串的真实长度,n只表示每个字符串的最大长度,不是真实长度

char** strs相当于char strs[][]
如 i=1,j=2,char strs[i][j]就是char strs[1][2]