小编tar*_*dis的帖子

使用printf("%s",..)打印一个struct,struct的第一个变量类型是'char*',为什么可以得到一个存储在'char*'中的正确字符串?

在C语言中,定义一个这样的结构:

typedef struct str
{
    char *s;
    int len;
}str;


int main()
{
    str a;
    a.s = "abc"
    printf("%s", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:"abc",我想知道为什么可以得到这个?
我猜编者认为printf("%s", a)printf("%s", *&a) 因为与一个等于&A.S,因此*a等于*A.S,对不对?

但如果是这样,如果我把int len结构体中的第一个放在这样:

typedef struct str
{
    int len;
    char *s;
}str;
int main()
{
    str a;
    a.len = 10;
    printf("%d", a);
}
Run Code Online (Sandbox Code Playgroud)

这次输出是:10,为什么?
也许编译器读取%d所以它知道应该打印一个整数值,只打印4个字节?我想得到一些解释.

c struct

4
推荐指数
3
解决办法
5万
查看次数

rails中append_before_action和before_action有什么区别?

例如:在控制器文件中,append_before_action :calculate, only: :show 和之间有什么区别 before_action :calculate, only: :show

ruby-on-rails

0
推荐指数
1
解决办法
3729
查看次数

标签 统计

c ×1

ruby-on-rails ×1

struct ×1