一位 friend 帮助我编写了这段代码,但我不明白它是如何工作的。第5行是(*pp-97)*4基本上是char 110的大小,所以(110-97)*4还是pp的扫描值?谢谢
char *pp =(char*)malloc(110);
printf("Enter text: ");
scanf("%s", pp);
*pp = *(pp + n);
int f = (*pp - 97)*4;
最佳答案
注意,*pp
相当于pp[0]
,一般情况下*(pp + n)
相当于 pp[n]
,所以
*pp = *(pp + n);
也可以写成pp[0] = pp[n];
,将偏移量n
处的char
复制到第一个char
位于偏移量 0 处。
int f = (*pp - 97)*4;
这可以写
int f = (pp[0] - 97)*4;
从 pp
指向的 block 中的第一个 char
中减去 97('a'
的 ASCII 值),得到差值乘以 4。
关于c - *(a+b) 和 (*a+b) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515965/