c - printf() 打印整个数组

标签 c arrays char printf

假设我的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",它只会打印一个字母。但是,这个地址中每个字母的内存地址仍然不同。请问有人给我解释一下吗?

最佳答案

But still, the memory address for each letter in this address is different.

内存地址不同,但作为其字符数组,它们是连续的。当您传递第一个元素的地址并使用 %s 时,printf 将打印从给定地址开始的所有字符,直到找到 '\0'

关于c - printf() 打印整个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962144/

相关文章:

c - 在 linux 内核引导中读取键盘输入

c - 了解广播操作 mpi

c - memcpy 启动索引真的需要吗?

C - 用单个字符替换连续多次出现的字符

c - 为什么我在使用 Make 和 Emacs 时会出现此错误?

c# - 使用 C++/CLI 而不是 C# 来包装(第三方)C 库 (dll) 有什么优势?

arrays - 如何按字母顺序对记录数组进行排序,其中记录的名称为 : string field?

PHP在没有循环的情况下获取数组中最长的字符串

c++ - QByteArray数据格式解释

c - 是否有机器,其中 sizeof(char) != 1,或至少 CHAR_BIT > 8?