gpt4 book ai didi

c - 关于 C 中结构的奇怪输出

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:45 24 4
gpt4 key购买 nike

我尝试了一个简单的结构。

#include<stdio.h>
struct test
{
int i;
int j;
};
int main()
{
struct test t;
t.i=1;
t.j=2;
printf("t:%d, i:%d, j:%d\n", t, t.i, t.j);
}

输出不正确为:

"t:1, i:2, j:1 "

如果我把printf语句改成

printf("i:%d, j:%d\n", t.i, t.j); 

输出是正确的:

"i:1, j:2" 

为什么第一个不能打印正确的输出?我在这里错过了什么吗?我在 ubuntu 上使用 gcc。谢谢。

最佳答案

您给 printf() 的模式告诉它应该如何读取参数序列。您告诉 printf() 读取 %d 但给它一个 struct test 而不是 int。这把整个事情搞得一团糟,因为 struct test 被转储到堆栈中,它比 int 占用更多空间。

printf() 模式只能支持原语和指向以 null 结尾的字符串的指针作为参数。它无法打印 struct

关于c - 关于 C 中结构的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19884434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com