乔宽 发表于 2019-6-26 17:30:27

课后作业,指针数组

#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;
}其中if (i > strlen((*p)) - 1)这句不是很明白,小甲鱼老师说是实矩阵转制,把i和j俩个循环变量调换一下位置,但这调换的条件就不是很明白。

newu 发表于 2019-6-26 19:53:55

对于你这个程序来说,strlen((*p))的意思就是计算每个字符串的长度,比如说strlen((*p))就指的是"Star",它的长度就是4

if (i > strlen((*p)) - 1) 这句的意思,举个栗子:

假设i当前在打印"FishC"里面的最后一个大写C,那么此时i的值是4,j从0开始计数,

if判断的时候,"FishC"的长度是5,减一后是4,判断4>4不成立,所以才把 C 这个字符打印出来了,

接下来j是1了,判断 "Five"长度是4,减一后是3,判断4>3成立,所以就break了...以此类推
页: [1]
查看完整版本: 课后作业,指针数组