簡體   English   中英

printf()打印整個數組

[英]printf() prints whole array

假設我的C程序中有以下代碼:

#include <stdio.h>

void PrintSomeMessage( char *p );

int main(int argc, char *argv[]) {
    char arr[10] = "hello";
    PrintSomeMessage(&arr[0]);
    return 0;   
}

void PrintSomeMessage(char *p)
{
    printf("p: %s",p);
}

為什么輸出這個單詞“hello”而不是單個字符“h”?

但我明白,如果我在格式化程序中輸入"%c" ,它將只打印一個字母。 但是,此地址中每個字母的內存地址不同。 請有人向我解釋一下嗎?

但是,此地址中每個字母的內存地址不同。

內存地址不同,但作為其字符數組,它們是順序的。 當您傳遞第一個元素的地址並使用%sprintf將打印從給定地址開始的所有字符,直到找到'\\0'

包含數組 ,基地址(即數組的地址)是數組中第一個元素的地址。 數組名稱也充當指針。

考慮一排房屋(每個房屋都是陣列中的一個元素)。 要識別行,您只需要第一個房子地址。您知道每個房子后面是下一個(順序)。獲取第一個房子的地址,也會給您行的地址。

包含字符串文字(在聲明中定義的字符數組),它們會自動附加\\0

printf使用格式說明符和提供的地址進行打印。 因為,你使用%s它從第一個地址打印(使用算術遞增指針)直到'\\ 0'

暫無
暫無

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

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