鱼C论坛

 找回密码
 立即注册
查看: 1283|回复: 1

[已解决]课后作业,指针数组

[复制链接]
发表于 2019-6-26 17:30:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <string.h>

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

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

        return 0;
}其中if (i > strlen((*p)[j]) - 1)这句不是很明白,小甲鱼老师说是实矩阵转制,把i和j俩个循环变量调换一下位置,但这调换的条件就不是很明白。
最佳答案
2019-6-26 19:53:55
对于你这个程序来说,strlen((*p)[j])的意思就是计算每个字符串的长度,比如说strlen((*p)[2])就指的是"Star",它的长度就是4

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

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

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

接下来j是1了,判断 "Five"长度是4,减一后是3,判断4>3成立,所以就break了...以此类推
微信图片_20190626172403.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-26 19:53:55 | 显示全部楼层    本楼为最佳答案   
对于你这个程序来说,strlen((*p)[j])的意思就是计算每个字符串的长度,比如说strlen((*p)[2])就指的是"Star",它的长度就是4

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

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

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

接下来j是1了,判断 "Five"长度是4,减一后是3,判断4>3成立,所以就break了...以此类推
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 06:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表