不是,必须使用&,才能得到地址。
结构体名不能用下标,不能直接当地址用,不能直接赋值给指针,需要加&。可以把一个结构体直接赋值给另一个结构体,也可以逐个赋值。 结构体数组也是这样,数组名可以做地址,数组名+1就是+一个结构体的大小,而里面的结构体不能直接当地址用。
结构体名和类型名是等价的,是一种类型说明符,只有在它定义了变量(对象)后系统才分配内存空间,不是地址。 本回答由网友推荐 举报| 答案纠错 | 评论 20 0 wp007198889 采纳率:47% 擅长: 硬件 编程语言 物理学 数学 天文学 其他回答 结构体的定义是一种类型的定义,就像int、float一样来定义变量,通过这种类...
新发现,结构体名不是地址,也有值 只看楼主 收藏 回复todd84121 强能力者 7 #include <stdio.h>struct{ unsigned short AX; unsigned short AY;}EAX ;int main(int argc, char* argv[]){ EAX.AX=0x5678; EAX.AY=0x1234; printf("%x",EAX); getchar(); return 0;}显示12345678 RichSelian ...
这个地址是一个指针,指向数组中第一个元素的内存位置。当我们通过数组名加上索引的方式来访问数组元素时,编译器会根据这个地址和索引计算出具体元素的内存地址,从而访问到该元素的值。因此,可以说数组名是数组元素地址的“代表”或“指针”。总的来说,结构体变量名和数组名在C...
所有类型的数组的数组名都是一个地址常量,表示数组首元素的地址,不仅仅结构体数组如此。比如:char carr[2];carr的值等于&carr[0]。int iarr[3];iarr的值等于&iarr[0]。可以用如下代码验证这点:include <stdio.h> int main(){ char carr[2];int iarr[3];printf("carr=%p,&carr[0]=...
C语言,结构体成员的地址 先回顾一个基础的知识,不同类型的数据在16位,32位,64位的机器分别占用多少字节。 可以看到long类型的数据比较特殊,在写跨平台的应用时需要注意,最好是避免使用 定义两个结构体 typedefstruct_demo_node_{struct_demo_node_*pprenode;struct_demo_node_*pnextnode;unsignedlongmember_num;...
当然可以,但是变量名是有局限的。变量名的本质是什么?是变量地址的符号化,变量是为了让我们编程时更加...
会把node1转换成void*输出 一个struct对计算机来说其实也只是一段二进制,你把它当成不用类型去解释就...
结论:结构体传参的时候,尽量传结构体的地址。 最后我们介绍一下函数调用,函数在传参的时候,参数需要压栈,栈是一种先进后出,后进先出的数据结构。 每一个函数调用都会在内存的栈区上开辟一块空间, 我们简单的了解一下“栈”: 我们再来简单的了解一下参数压栈是怎么一回事: ...