在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个字节?我想得到一些解释.
例如:在控制器文件中,append_before_action :calculate, only: :show
和之间有什么区别
before_action :calculate, only: :show?