14. 下列程序段的输出结果是 。 char *st[]={"abcd","efgh","ijkl","mnop"}; printf("%s", *(st+1)+1);
时间: 2024-03-17 21:38:11 浏览: 144
程序段的输出结果是 "fgh"。
解析:
- `st` 是一个字符指针数组,其中包含了4个字符串常量的地址。
- `*(st+1)` 表示取出 `st` 数组中的第2个元素,即 "efgh" 的地址。
- `*(st+1)+1` 表示在 "efgh" 的地址上偏移1个字节,即指向 "fgh" 的地址。
- `printf("%s", *(st+1)+1)` 打印出以 "fgh" 为起始地址的字符串,即输出结果为 "fgh"。
相关问题
5 分析并验证以下程序的运行结果: #include "stdio.h" void main() { char a[4][5]={"ABCD","EFGH","IJKL","MNOP"}; char (*p)[5]; int i,j; p=a; for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%c",*(*(p+i)+j)); /* 第 9 行 */ printf("\n"); } } 若将程序第 9 行中的%c 改成%s,应该怎样修改?
这段程序的功能是定义了一个二维字符数组a,然后定义一个指向字符数组的指针p,将p指向a,然后通过循环遍历输出a数组中每个元素的值。
程序的输出结果应该为:
ABCD
EFGH
IJKL
MNOP
若将程序第 9 行中的%c 改成%s,应该修改为printf("%s", *(p+i));,这样才能输出每一行字符数组的完整字符串。
阅读全文