gpt4 book ai didi

c - c 中的运算符和优先级

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:30 27 4
gpt4 key购买 nike

我遇到了以下程序。

 #include<stdio.h> 
int main()
{
char *s[] = { "knowledge","is","power"};
char **p;
p = s;
printf("%s ", ++*p);
printf("%s ", *p++);
printf("%s ", ++*p);

return 0;
}

输出:知识 nowledge s我确定
1.首先printf打印知识
2.第二个 printf 也打印 nowledge 因为它包含一个后增量所以第一个 printf 的原始值被保留。
现在在这个阶段,我对 *p++ 到底做了什么感到困惑。现在将 p 指向 isowledge

最佳答案

这个程序的输出非常困惑,因为 ++*p 增加了 p 指向的值,这使得字符串数组 s 递增。

  printf("%s ", ++*p);

*p 返回的值递增。 p 指向 s[0]。因此 s[0] 将指向 “知识”

  printf("%s ", *p++); 

p 仍然指向 char * 数组的第一个元素。因为我们之前将 s[0] 的值递增了 1,所以 s[0] 仍然指向 “nowledge”p 在取消引用后递增。

  printf("%s ", ++*p); 

*p 返回的值递增。 s[1] 将递增并指向 “s”

关于c - c 中的运算符和优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25855127/

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