永发信息网

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

答案:2  悬赏:50  手机版
解决时间 2021-12-23 03:30
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 为什么?求具体过程
最佳答案
#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'
}
全部回答
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类型 希望能够帮助到你,望采纳!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我今年二十五岁,在外面打工差不多十年,一直
Ps2鬼武者3的美版同日版有什么区别,内容,具
若x,y满足1≤x+y≤3与-1≤x-y≤1,则x方加y方
劬劳怎么读
微信被封61天,有解决办法吗
华容区鄂州中国联通(华容区葛店镇大湾村专营
水果茶甜品店如何推广
华为怎么关闭主题
怎么选购优质酸奶
补写下列名句的空缺部分()(1)吾十而有五志
我被对方加入黑名单,我怎么解开它
tcl王牌洗衣机启动之后不放水总是发出滴滴滴
问:微信公众号不能用自己的私人微信号注册怎
电缆4*70+1*35是几芯
女人永远是祸水 男人永远是什么?
推荐资讯
观音心咒戴身上有好观音心咒六字戴身上可以吗
运动鞋鞋子大3码以上有没有关系?
我到宿州东站下车,然后到宿州火车站出来,请
怎么炸肉好吃
什么情况需要离职证明
小车里面要听音乐想看MV或者屏幕有歌词,怎么
如图为某动物细胞的结构模式图,请根据图中细
泫雅为什么被称为性感小野马
帮帮忙.有谁能告诉我营业执照2年没年检还可不
心理咨询师三级过了后多久可以考二级
如何将本年利润科目余额转到利润分配科目
下列句子没有语病的一项是(3分)A. 由于全球
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?