簡體   English   中英

C 程序 printf 字符與字符串數組

[英]C program printf char with string array

#include <stdio.h>

char world[] = "HelloProgrammingWorld";
int main()
{
    printf("%s", world + world[6] - world[8]);

    return 0;
}

output 將是 mmingWorld。

我知道“世界”將存儲在 memory 中,類似這樣。

0x6295616             H    world[0]
0x6295617             e
0x6295618             l
0x6295619             l
0x6295620             o
0x6295621             P
0x6295622             r    world[6]
0x6295623             o
0x6295624             g    world[8]
0x6295625             r
0x6295626             a
0x6295627             m
0x6295628             m
0x6295629             i
0x6295630             n
0x6295631             g
0x6295632             W
0x6295633             o
0x6295634             r
0x6295635             l
0x6295636             d

但是計算output到“mmingWorld”的公式是什么。 我嘗試了幾種方法,但仍然無法達到那個詞。

我使用這個https://www.onlinegdb.com/online_c_compiler編譯

world[6]是字符串中的字符'r'world[8]是字符串中的字符'g' 在 ASCII 中, 'r'的數值為 114, 'g'的數值為 103。

當您按名稱引用固定數組時,它會衰減為指向數組第一個元素的指針。

因此,您基本上將char*指針指向字符串中的第一個字符,並使用指針算法將該指針向前推進114 - 103 = 11個字符串中的字符數。 因此,您有效地將&world[11]傳遞給printf() ,因此 output "mmingWorld"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM