目前,我正在学习C,并试图使我的头脑围绕这些指示。他们真的不一样吗?
++*argv
*argv++
*(++argv)
*(argv++)谢谢!
发布于 2014-11-13 06:29:18
比指针去引用操作符具有更高优先级的是后缀增量运算符,而不是前缀增量。所以这两者是等价的:
*p++ *(p++)前缀增量与*具有相同的优先级,因此*++p增加指针,并且与*(++p)相同。此外,++*p与++(*p)相同。
发布于 2014-11-13 06:25:03
看看下面的代码。
main()
{
int a[4] = { 10,20,30,40};
int *argv = a;
t = ++*argv;
printf("%d\n",*argv); /* Here *argv is 11 */
printf("%d\n",t); /* Here t is 11 because of pre-increment */
*argv++; /* argv is incremented first ++ has higher priority over "*" */
printf("%d\n",*argv);/* *argv is printed which is 20 */
*(++argv); /* argv is incremented first ++ has higher priority over "*" */
printf("%d\n",*argv); /* *argv is 30 */
*(argv++); /* As explained above the same applies here also */
printf("%d\n",*argv);
}发布于 2017-07-16 12:30:04
两个递增的小例子。
小贴士:为了更好的理解,试着把argc想象成1或2。
后增量
在下面的程序中,所有参数都被打印为,包括程序名 argv[0]。
int
main(int argc, char **argv)
{
while (argc--)
printf("%s\n", *argv++); /* same as *(argv++) */
}预增量
在下面的程序中,除了程序名 argv[0]之外,所有参数都是打印的。
int
main(int argc, char **argv)
{
while (--argc)
printf("%s\n", *(++argv));
}++*argv会增加值*argv。
https://stackoverflow.com/questions/26902462
复制相似问题