永发信息网

C语言char*p[4]问题求教!!

答案:2  悬赏:50  手机版
解决时间 2021-12-23 03:30
  • 提问者网友:佞臣
  • 2021-12-22 21:26
34、main()
{ int i;
char *p[4]={"ABCD","BCDE","CDEF","DEFG"};
char **pp=p;
for (i=0;i<4;i++,pp++)
printf("%c ",*(*pp+1)+2);

答案是D E F G 为什么?求具体过程
最佳答案
  • 五星知识达人网友:执傲
  • 2022-01-10 03:41
#include 

int main()
{
int i;
char *p[4] = { "ABCD", "BCDE", "CDEF", "DEFG" };
char **pp = p;
for (i = 0; i < 4; i++, pp++)
printf("%c   ", *(*pp + 1) + 2);
// 分别输出p[0][1] + 2, p[1][1] + 2, p[2][1] + 2, p[3][1] + 2
// 即 'B' + 2, 'C' + 2, 'D' + 2, 'E' + 2
// 即 'D', 'E', 'F', 'G'
}
全部回答
  • 1楼网友:掌灯师
  • 2022-01-10 05:20
char *a[]是错误的,只能定义char *a[任意整数]; 或者char *a[4或者其他整数或者不填]=“abc”; 或者char *a[3或者其他整数或者不填]={'a','b','c'}; 或者char *a[2或者其他整数或者不填]={"abc","cde"}; 或者char k,j,l,*a[3]={&k,&j,&l}; char (*)a[]也是错误的,只能定义为(char *)a[任意整数]; 首先说下第一个,以char *a[4];为例, 这语句是定义一个指针型数组,他的元素都是指针。指针是可以直接来指向一个字符串的,用法是char *p="good。指针型数组中每个元素都是指针,则每个元素都可以去定义一个字符串或者是定义一个变量;所以如果有一个a[4][4]={"aaa","bbb","ccc","ddd"}; 现在就可以用char *p[4]={"aaa","bbb","ccc","ddd"}; 这样的好处是节约了空间,一个数组被定义下来后,内存就被分配了,如果这个数组在后面的语句中不再使用了,那它就占着空间,使得源文件很大,如果使用指针数组,就很容易解决这个问题了,因为只要让指针数组在指向其他的字符串或者其他的一些变量 ,这样原来的空间就被释放了 (char *)a[4]的意思是将指针型数组a中的元素a[4]强行转化为char类型 希望能够帮助到你,望采纳!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯