机智如我么么哒 发表于 2019-9-20 17:00:51

小甲鱼的代码有点没看懂

if (i > strlen((*p)) - 1)这里看不懂,有大佬解释一下吗
#include <stdio.h>
#include <string.h>

int main()
{
      char *array = {"FishC", "Five", "Star", "Good", "Wow"};
      char *(*p) = &array;
      int i, j;

      for (i = 0; i < 5; i++)
      {
                for (j = 0; j < 5; j++)
                {
                        if (i > strlen((*p)) - 1)
                        {
                              break;
                        }
                        printf("%c ", (*p));
                }
                printf("\n");
      }

      return 0;
}

yuweb 发表于 2019-9-20 17:11:31

*p代表了某一个字符串(就是当前循环到的字符串),strlen((*p))是当前字符串的长度,比如'FishC'的长度是5,而'Five'的长度为4
strlen((*p)) - 1是字符串的最后一个字符,当i > strlen((*p)) - 1的时候应该结束当前循环,以免数组下标越界

机智如我么么哒 发表于 2019-9-20 17:37:31

yuweb 发表于 2019-9-20 17:11
*p代表了某一个字符串(就是当前循环到的字符串),strlen((*p))是当前字符串的长度,比如'FishC'的长度 ...

strlen是测的二维数组的长度吗,如果是它是不是以一维数组的长度为准

yuweb 发表于 2019-9-20 17:43:50

机智如我么么哒 发表于 2019-9-20 17:37
strlen是测的二维数组的长度吗,如果是它是不是以一维数组的长度为准

strlen是获取字符串的实际长度

机智如我么么哒 发表于 2019-9-20 17:46:50

yuweb 发表于 2019-9-20 17:43
strlen是获取字符串的实际长度

意思是它计算的是一维数组的长度吗?否则它应该不等于5吧

yuweb 发表于 2019-9-20 17:57:53

机智如我么么哒 发表于 2019-9-20 17:46
意思是它计算的是一维数组的长度吗?否则它应该不等于5吧

也可以这么说
页: [1]
查看完整版本: 小甲鱼的代码有点没看懂