重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
int myint会在内存中开辟一个4字节的空间
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的乐至网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
你将myint的地址传给test函数
那么test函数将认为这是一个struct的首地址
前面定义struct node的结构为4个字节的num,6个字节的char[](由于一般32位的程序的内存空间要对其4字节,所以6字节的char[]可能要占用8个字节的空间),4个字节score
test函数仍然按照约定的格式进行操作,将myint开始单元的前4个字节填入数字100,然后接下来的字节填入HeHe的ASCII码,字符串结束符等,然后空2个字节的位置(字对齐原则),最后在将4字节的空间填入100
由于myint的首地址和mynode的首地址不同,所以填写时会发生错位现象
你要是进一步的测试,可以显示各个变量的地址看看,能帮助你理解,显示地址可以用printf("%p",a)或printf("%d",a)
这样写是不可以的。
应该这么声明:
void days(struct student * judget)
{
//省略
}
struct student s;
s.year = year;
s.month = month;
s.day = day;
days(s);//这么使用
但是我不明白为什么结构体的名称是student啊,这个和学生没有关系,应该起个相关的名称,如time之类的,呵呵
C语言中,所有的变量都存储在内存中,可以通过运算符获得变量的内存地址,函数调用时,只需要把普通变量前加上符号,就可以达到传递变量地址的目的。
例如:
定义一个结构体类型
struct Yearmonthday
{
int year, month, day;
};
定义相关函数,参数类型指定为结构体类型指针
void input(struct Yearmonthday *p1) //函数形参p1是结构体指针类型
{
printf("请输入年,月,日:");
scanf("%d,%d,%d",p1-year,p1-month,p1-day);
}
在主函数中定义一个结构体变量,调用相关函数,传递变量地址
int main()
{
struct Yearmonthday ymd;
input(ymd); //传递变量地址,以便带回数据
printf("date=%d/%d/%d\n", ymd.year, ymd.month, ymd.day ); //输出结果
return 0;
}
1.可以把结构体作为参数啊,
2.不去取地址的意思,是引用的意思,函数执行时修改L的值,就直接的修改了实参的值,相当于地址传递了。
3.真正调用的时,如下:
SqList
tempStruct;
InitList_Sq(tempStruct)
这样就可以了。
呵呵