[英]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"
,它將只打印一個字母。 但是,此地址中每個字母的內存地址不同。 請有人向我解釋一下嗎?
但是,此地址中每個字母的內存地址不同。
內存地址不同,但作為其字符數組,它們是順序的。 當您傳遞第一個元素的地址並使用%s
, printf
將打印從給定地址開始的所有字符,直到找到'\\0'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.