结构体数组作为函数参数传递(结构数组名作函数参数,地址传递)

http://www.itjxue.com  2023-01-27 09:09  来源:未知  点击次数: 

结构体成员为数组,函数调用时是什么传递

如果函数的参数是结构体变量

那么一样是传值调用

整个结构体是一个整体

如果是结构体数组 或者结构体指针 那么是传指针调用。

结构体数组怎么传入函数中

Distance_Msg(pw,pl,Distance_Msg_data[0]); 改为:

Distance_Msg(pw,pl,Distance_Msg_data);

结构体数组如何作为参数传递给函数形参?

给你写了一个例子,用的是C++,在VC6.0编译通过

#includeiostream

using

namespace

std;

struct

example

{

int

a;

char

b;

};

void

deal(example

*flag)

{

char

ch='A';

for(int

i=0;i10;i++)

{

flag[i].a=i;

flag[i].b=ch++;

cout"第"i+1"组:a是"flag[i].a",b是"flag[i].bendl; }

}

void

main()

{

example

temp[10];

deal(temp);

}

可以参照一下,解决结构体数组作为参数传递。

如何把结构体数组作为实参传递给函数?

数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。另外你程序报错是因为输入没有加“”。

void repeat(city *la,char name,int x,int y)

改为:

void repeat(city *la,char * name,int x,int y)

因为char name[10]是数组,而函数的参数为字符,所以调用失败。

结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。

扩展资料:

结构体的大小不是结构体元素单纯相加就行的,因为我们主流的计算机使用的都是32bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便。所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来。

每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。

规则:

1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。

2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。

3、结合1、2可推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。

参考资料来源:百度百科-结构体

结构体数组怎么做函数参数

括号中加入STUDENT gh[]

首先要在主函数前定义void Label(STUDENT *[])但在STUDENT 定义之后

引用时Label(student) student本身就是地址 这是数组和结构体的性质

此时引用的是首地址,可在引用后对地址进行j=0循环加1到下一个结构体进行操作,如gh[j]

关于c语言中的结构体数组作为函数参数传递的

1、结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。

2、例程:

typedef?struct?Student

{

????char?name[10]?;

????int?age?;

}Student;

#define?LEN?10?

//print?all?Student?infomation

void?fun(Student?*pStu,int?len)

{

????int?i?;?

????for(i?=?0?;i??len?;++i)

????{

????????printf("%s\t%d",pStu[i].name,pStu[i].age)?;

????}

}

int?main?()

{

????Student?stu[LEN]?;

????fun(stu,LEN)?;

????

}

(责任编辑:IT教学网)

更多