|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
本帖最后由 桃花飞舞 于 2022-11-21 00:15 编辑
看不看得懂就看你的了,我也只能表达成这样,
如果不借用编译器的结果,我自己是得不出结果的。
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char *array[5] = {"FishC", "Five", "Star", "Good", "Wow"}; //指针数组,每个元素都是指针,字符串存储在常量区
- char *(*p)[5] = &array; //这是一个二级指针,(*p)[5]是数组类型的指针
- int i, j;
- for (i = 0; i < 5; i++)
- {
- for (j = 0; j < 5; j++)
- {
- printf("i = %d len = %d\n",i,strlen((*p)[j]));
- //这一步操作是干什么的?能否解释下为何该程序少了这段代码会出现%?
- if (i > strlen((*p)[j]) - 1) //strlen((*p)[j])是指的是指针数组每个元素的长度,也就是每个元素中字符的个数,
- //i指的是指针数组char *array[5]中每个元素指向的字符串的第i个字符
- //如果i大于指针数组中指针指向的字符串的字符串总长度,就不打印当前到后面的行的第i列的字符,
- //也就是说第j行的第i列没有字符。再从指针数组的第一个元素(指针)指向的字符串也就是j = 0开始
- {
- break;
- }
- printf("%c ", (*p)[j][i]); //j指的是行,i指的是列
- }
- printf("\n");
- }
- return 0;
- }
复制代码
|
|