<分区>
看到了printf的这条语句
printf("Hello printf\n" +6);
当我运行它时,我得到了这个:printf
。这是我第一次看到这个版本的 printf 在 ""
之后没有 ,
。我应该认为上面的命令如下所示吗?
char *p = "Hello printf";
printf("%s\n", p+6);
<分区>
看到了printf的这条语句
printf("Hello printf\n" +6);
当我运行它时,我得到了这个:printf
。这是我第一次看到这个版本的 printf 在 ""
之后没有 ,
。我应该认为上面的命令如下所示吗?
char *p = "Hello printf";
printf("%s\n", p+6);
最佳答案
这叫做指针运算。它所做的是获取指向字符串文字的指针,并添加六个“单位”(其中一个单位是指向的基础类型的大小,在这种情况下 sizeof(char)
(它总是一))。
你可以看到这样的字符串:
+--+--+--+--+--+--+--+--+--+--+--+--+--+ | H| e| l| l| o| | p| r| i| n| t| f|\0| +--+--+--+--+--+--+--+--+--+--+--+--+--+ 0 1 2 3 4 5 6 7 8 9 10 11 12 13
下面的数字是字符串中特定字母的偏移量或索引(如果使用数组表示法)。
这里要知道的重要一点是它不增加字节,这里只是巧合,因为基类型是一个字节的大小。如果您有一个 short
数组(通常是两个字节),那么添加六个将添加 6 * sizeof(short)
字节,在正常情况下是 12 个字节。
关于c - printf语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21186210/