问题描述
解决方案
因为先取的地址,然后才src+1
解决方案二:
要看到你说的效果,需要把src++写在printf的上一行。
解决方案三:
socket是什么意思(1)
解决方案四:
你好,如果你要得到e的话,应该打印*src++ 取当前值,然后再移动地址;(*p)++,取当前值然后再使当前值的数值增一。
而你目前的问题为何是h呢?原因在其你直接用printf函数将其打印,只取了当前值,若要得到e你可以newline,重新打印*src;
另外一种方法,你可以在printf函数之前先进行,再打印*src++的值。你自己你想测试找出该问题你可以通过打印其地址用%#p,
#include <stdio.h>int main (void){ char* src = ""hello""; *src++; printf (""%c%#p
"" *src*src);// printf (""%c%#p
"" *src *src);// printf (""%c%#p
"" *src++ *rc);// printf (""%c%#p
"" (*src++) *src); getchar(); return 0;}
解决方案五:
*有两个意思,理论上,作为 乘法 运算符,级别低于 ++(自增)。作为 指针取值 运算符,级别同 ++(自增)一样。*p++; 很令人混淆。它不是 *p = *p + 1; 它却是 *p = *(p+1); int a[]={11223};int *p=a;printf(""%d
""*p++); 输出 a[0]的值 1,后加加:表达式里先用原值,不自增。出了上面打印语句再自增 *p = *(p+1);接着打印 printf(""%d
""*p); 打出 a[1]的值 12。在你这里:printf(""%c""*a++); //为hprintf(""%c""*a); //为e
解决方案六:
运算符优先级的问题 * > ++ 运算符 *p++ 编译器认为是 (*p)++
时间: 2024-10-26 12:27:33