首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C 语言】结构 ( 结构作为函数参数 | 结构指针作为函数参数 )

文章目录 一、结构作为函数参数 二、结构指针作为函数参数 三、完整代码示例 一、结构作为函数参数 ---- 结构变量 作为函数形参 , 在函数中 , 只能访问 该函数形参 , 无法修改 结构体内存..., 结构体形参 , 只能访问 , 不能修改 ; 代码示例 : /** * @brief printf_student 结构变量 作为参数 * @param s */ void printf_student...---- 结构指针变量作为参数 , 可以 通过 指针 间接赋值 , 在该函数中 , 将 from 结构指针指向的变量 拷贝到 to 结构指针指向的变量 ; 注意 : 函数中传入的是 指向 结构变量的指针...copy_student 结构指针变量作为参数...{ char name[5]; int age; int id; }Student; /** * @brief copy_student 结构指针变量作为参数

3.1K20

结构作为函数的参数

1.传递结构成员 > 只要结构成员是一个具有单个值的数据类型,便可把它作为参数传递给接受该特定类型的函数。 > 使用这种方式为函数传递参数与普通变量作为参数相同,都是以传值的方式传递的。...title[50]; char author[50]; }Shot; void modify(float stdata); modify(Shot.price); > 如果在被调函数中要修改结构成员的值...2.传递结构 > 使用结构变量作为函数的参数时,也是传值的,会将结构变量的全部内存单元的内容拷贝一份传递给被调函数。被调函数的形参也必须是同类型的结构类型。...为了解决以上问题,使用结构指针是一个更好的办法。 > 需要注意的是,结构变量名与数组变量名不同,结构变量名不是它的地址。...,因为他的参数是一个结构指针 > 实参还有第二种写法,将实参直接定义为结构指针 struct book { float price; int page; char title

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用结构作为函数输入参数

    使用结构作为函数的输入参数的话,在更新函数的时候,就没有必要把函数的声明以及所有调用函数的地方全部更新一遍,相对还比较方便,对于输入参数比较多的函数可以使用结构作为输入参数。...常用的有三种方式,分别是:用结构变量作函数参数,用指向结构变量的指针作函数参数,用结构变量的引用变量作函数参数。...用结构变量作函数参数: #include #include struct test { int a; float b[3]; } void...,采取的也是“值传递”方式,结构变量作为函数的参数,修改之后的成员值不能返回到主调函数,这往往造成使用上的不便,因此一般少用这种方法。...结构指针变量作为函数的参数,修改后的结构成员的值能返回到主调函数,并且,在调用函数期间,仅仅建立了一个指针变量,大大的减小了系统的开销,提高了运行效率。

    2.9K30

    【C 语言】结构 ( 结构 数组 作为函数参数 | 数组 在 栈内存创建 )

    文章目录 一、结构 数组 作为函数参数 ( 数组 在 栈内存创建 ) 二、完整代码示例 一、结构 数组 作为函数参数 ( 数组 在 栈内存创建 ) ---- 声明结构类型 : 定义 结构 数据类型..., 同时为该结构类型声明 别名 , 可以直接使用 别名 结构变量名 声明结构类型变量 , 不需要在前面添加 struct 关键字 ; typedef struct Student { char.../ 命令换行中 接收 输入的年龄 , // 设置到 Student 数组元素的 age 成员中 scanf("%d", &(array[i].age)); } 结构数组作为参数...: 使用 结构数组 作为参数 , 可以进行间接赋值 , 修改该 结构数组 的元素 , 可以当做返回值使用 ; 此时结构 数组 会退化为 结构指针 ; /** * @brief sort_struct_array...对结构数组 按照年龄进行排序 * @param array 结构指针 * @param count 结构数组的元素个数 */ void sort_struct_array(Student

    1.6K20

    【C 语言】结构 ( 结构 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一、结构 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二、完整代码示例 一、结构 数组 作为函数参数 ( 数组 在 堆内存创建 ) ---- 在上一篇博客 【C 语言】结构 ( 结构...数组 作为函数参数 | 数组 在 栈内存创建 ) 的基础上 , 将 栈内存 中的 结构数组 , 更改为 堆内存 中创建结构数组 ; 在堆内存中 , 创建 结构数组 : 传入 二级指针 , 该指针...数组 : 传入的参数是 二级指针 , 通过该 二级指针 指向 结构一级指针 , 将 结构指针 置空 ; /** * @brief free_student 释放内存 * @param array...数据类型 , 同时为该结构类型声明 别名 * 可以直接使用 别名 结构变量名 声明结构类型变量 * 不需要在前面添加 struct 关键字 */ typedef struct Student...} } /** * @brief sort_struct_array 对结构数组 按照年龄进行排序 * @param array 结构指针 * @param count 结构数组的元素个数

    1.5K30

    C语言结构类型定义+结构变量的定义与使用及其初始化+结构变量作为函数参数

    上一篇文章:返回指针值的函数+指向函数的指针+main()函数的参数 C语言结构类型定义+结构变量的定义与使用及其初始化+结构变量作为函数参数 结构 引例 结构变量的定义 结构变量的使用...结构变量作为函数参数 结构变量的初始化 下一篇文章 结构 引例 输出平均分最高的学生信息 #include struct student { int num; char name...: 结构类型实际上是一种模板,它的定义形式为: struct 结构名 { 类型标识符 结构成员名1; 类型标识符 结构成员名2; ......,然后才能进行结构变量的定义: struct 结构类型名 结构变量名; 1 struct student stu1,stu2;//定义两个结构变量 1 也可以在定义结构类型的时候同时定义结构变量...stu2=stu1;将结构变量stu1里面的所有成员变量的值分别对应赋给结构变量stu2 结构变量作为函数参数 结构变量的成员作为函数的实参,形参为普通变量或数组 也可以将结构变量作为函数的参数

    2.4K20

    结构

    • •3.为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构,它允许内部的元素是不同类型的。 二、结构的定义 •1.定义形式:结构体内部的元素,也就是组成成分,我们一般称为"成员"。...•1.先定义结构类型,再定义变量。...输出结果为: 结构数组 1.定义 •跟结构变量一样,结构数组也有3种定义方式 struct Student {     char *name;     int age; }; struct Student...,跟普通数组的用法是一样的 结构作为函数参数 •将结构变量作为函数参数进行传递时,其实传递的是全部成员的值,也就是将实参中成员的值一一赋值给对应的形参成员。...•每个结构变量都有自己的存储空间和地址,因此指针也可以指向结构变量 •* 结构指针变量的定义形式:struct 结构名称 *指针变量名 •* 有了指向结构的指针,那么就有3种访问结构成员的方式

    1.6K130

    结构

    (如 int ) 函数参数是什么类型就传什么类型 /* 函数功能:定义一个结构,在另一个函数中打印结构成员的值; 函数形参为结构变量的函数使用void qq(struct book cc); */...,要和上面定义的结构的类型一样 -即struct book cc和struct book one;  问一个问题如何把一个结构的变量的成员的信息copy到另一个结构变量?... one;       //定义一个结构名为book的结构变量one struct book cc;        //定义一个结构名为book的结构变量cc one.cose=25;  one.name...struct book shu[20];    //20本书  /* 函数功能:结构变量为数组的结构 */ /* 函数功能:结构变量为数组的结构 */ #include"stdio.h" struct...--来源于网络 我也只是记下了就这样用,下面看结构数组做函数参数 #include"stdio.h" struct book       //书 {  int price;     //书的价格 };

    1.4K60

    结构

    结构 1.1 结构基本概念 结构属于用户 自定义的数据类型, 允许用户存储不同的数据类型 1.2 结构定义和使用(cpp23.cpp) 语法:struct 结构名{结构成员列表}; 通过结构创建变量的方式有三种...作用:将自定义的结构放入到数组中方便维护 语法:struct 结构名 数组名[元素个数] = {结构1,结构2,...}; 使用 结构数组 时,struct 关键字可以省略 #define...(cpp25.cpp) 作用:结构中的成员可以是另一个结构 例如:每个老师辅导一个学员,一个老师的结构中,记录一个学生的结构; 1.6 结构做函数参数(cpp33.cpp) 作用:将结构作为参数向函数中传递...p->gender = "nv"; p->score = 300; cout << "地址传递修改后:" << endl; } int main() { //结构作函数参数...//将学生传入到一个参数中,打印学生身上的所有信息 //创建一个结构变量 struct Student s; s.name = "张三"; s.gender

    17300

    结构

    结构 结构的作用 数组:具有相同类型的数据的集合 结构:存储不同类型的数据项 单一的数据类型无法满足特定的需求,数据类型的集合体:结构 出现了 结构的定义和使用 结构的定义方式 结构是一种自定义数据类型...struct用来定义一个类型 结构的定义: 1struct 结构名字 2{ 3 //成员变量 4}; 定义结构后再定义变量 1//例1: 2struct stu 3{ 4 int id...,"小明同学"}; // STU这个结构类型就可以直接定义使用了 定义结构的时候给结构取别名 1//例3: 推荐这种写法 2typedef struct stu //定义结构的时候取别名...该结构最大对齐数为 int 也就是4个字节大小 ,结构的大小就是4的整数倍 ?...如果嵌套了结构的情况,嵌套的结构对齐到自己最大对齐数的整数倍处,结构的整体大小就是所有最大对齐数(含嵌套结构的对齐数)的整数倍。

    1.4K30

    结构

    emp8 取得就是结构的值 Go 语言允许我们在访问 firstName 字段时,可以使用 emp8.firstName 来代替显式的解引用 (emp8).firstName。...如果结构名称以大写字母开头,则它是其他包可以访问的导出类型(Exported Type)。...同样,如果结构里的字段首字母大写,它也能被其他包访问到 结构名称首字母和字段大小写,对同一个包的读写不受任何影响,如果不在同一个包,就有严格的显示,大写能方位,小写不能方位 12.结构相等性 结构是值类型...如果它的每一个字段都是可比较的,则该结构也是可比较的。如果两个结构变量的对应字段相等,则这两个变量也是相等的。...package employee // 创建一个私有的结构 type employee struct { name string age int } // 返回结构类型 func

    1.2K20

    结构

    结构 为什么要创建结构类型?在我们处理复杂对象的时候,比如描述一个人的时候,它有名字,性别,身高,体重等一些方面的特征。用结构打包描述的时候就比较方便。...结构类型的声明 结构类型的关键字struct。 声明的基本模板为: struct 标签 { 成员; }变量; 结构的成员可以是不同的类型。...结构类型的特殊声明: 匿名结构类型,它只能使用一次。...而结构在内存中存在结构对齐的现象。 1.第一个成员变量放在偏移量为0的位置 2.后面的成员放在偏移量为对齐数的整数倍的位置。...5.如果含有结构嵌套的情况,镶嵌的那个结构的对齐数是里面成员的最大对齐数。

    59420

    【C 语言】结构 ( 结构浅拷贝 )

    文章目录 一、结构浅拷贝与深拷贝 二、结构浅拷贝 三、结构浅拷贝代码示例 一、结构浅拷贝与深拷贝 ---- 结构 中 嵌套了 指针 , 指针指向的内存 , 如果需要 malloc 在堆内存中...拷贝 指针变量的值 , 不会拷贝 指针变量 指向的 内存空间的 数据 ; 二、结构浅拷贝 ---- 结构浅拷贝 : 下面两种方式的拷贝 , 是结构的浅拷贝 ; 直接拷贝结构体内存 : //...结构体内存拷贝 // 该拷贝是浅拷贝 memcpy(to, from, sizeof (Student)); 使用 = 操作拷贝 : 只会将 结构 变量的 内存 , 从 from 指针指向的地址..., 拷贝到 to 指针指向的地址 ; // 结构直接赋值 , 与上面的代码作用相同 // 该拷贝也是浅拷贝 *to = *from; 三、结构浅拷贝代码示例 ---- 代码示例...数据类型 , 同时为该结构类型声明 别名 * 可以直接使用 别名 结构变量名 声明结构类型变量 * 不需要在前面添加 struct 关键字 */ typedef struct Student

    3K20

    结构与共用

    结构与数组类似,都是由若干分量组成的,与数组不同的是,结构的成员可以是不同类型,可以通过成员名来访问结构的元素。 结构的定义说明了它的组成成员,以及每个成员的数据类型。...结构变量说 明的一般形式如下: struct 结构类型名称 结构变量名; 定义结构便是定义了一种由成员组成的复合类型,而用这种类型说明了一个变量才会产生具体的实 。...2、结构的高级使用 结构数组 结构数组是一个数组,其数组的每一个元素都是结构类型。...在实际应用中,经常用结构数组来 表示具有相同数据结构的一个群体,如一个班的学生档案,一个车间职工的工资表等。定义结构数组和 结构变量相仿,只需说明它为数组类型即可。...不能把共用变量作为函数参数, 也不能是函数返回共用变量, 但可以使用指向共用变量的指针。 共用类型可以出现在结构类型的定义中,也可以定义共用数组。

    1.6K70

    结构结构指针的区别

    1.定义区别 结构的定义如下: struct 结构名 { 数据类型 成员变量名1; 数据类型 成员变量名2; // 可以有更多的成员变量 }; 例如,定义一个表示学生的结构...结构指针可以用来指向已经存在的结构对象,也可以用来动态创建新的结构对象。...结构指针可以直接通过指针访问结构的成员变量,例如stuPtr->id表示访问指针stuPtr所指向的结构的id成员变量。...总结起来,结构定义了一种用户自定义的数据类型,可以包含多个成员变量;结构指针用来指向结构对象或动态创建的结构对象,并可以通过指针访问结构的成员变量。...总结起来,结构结构指针的区别在于结构体表示数据类型,而结构指针表示指向结构的指针变量。在链表中,通过结构体表示节点,通过结构指针操作节点的指针,从而实现链表的各种操作。

    11310
    领券