gpt4 book ai didi

c - c中的指针递增

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:17 24 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
static char *s[]={"black","white","pink","violet"};
char **ptr[]={s+3,s+2,s+1,s},***p;
char a[]={"DEAD"};
p=ptr;
++p;
printf("%c\n",a[0]);
printf("%s\n",*s); //black
printf("%s\n",*s+1); //lack
//printf("%s\n",s+1);
printf("%s\n",s[0]);//black
printf("%s\n",s[1]);//white
printf("%s\n",s[2]);//pink
printf("%s\n",s[1]);//violet
printf("%s\n",s[1]+1);//hite
printf("%s\n",s[1]+6);//pink
printf("%s\n",**p+1); // how does this prints ink
return 0;
}

输出:

D black lack black white pink white hite pink ink

请帮忙理解

最佳答案

所以,p 是一个指向字符串的指针,它基本上是一个指向 char 的指针。

p本身指向ptr数组的第一个元素;在 p++ 之后它指向第二个,即 s+2。

s+2 指向s数组中的第三个元素,也就是“粉色”

这些是 **p 执行的两个级别的解引用

现在,**p 指向“pink”的第一个字符,因此**p+1 指向'i'

现在,printf 获取指向 i 的指针并打印所有内容,直到下一个空字节,导致“ink”被打印到您的控制台。

关于c - c中的指针递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7188484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com