c语言——结构体做函数参数

做ICMP攻击想把IP作为用户输入,突然发现自己连传递结构体参数都不会,这才先从小的程序试验一下,弄清楚以后才能接着进行。

first,传递结构体变量:

#include <stdio.h>
struct para{
char *a;
int b;
};

void print(struct para f){
    printf("a=%s\nb=%d\n",f.a,f.b);
}
void main(){
    struct para p;
    p.a="abc";
    p.b=12;
    print(p);
}

second,传递结构体指针:

#include <stdio.h>

struct para{
char *a;
int b;
};

void print(struct para *f){
    printf("a=%s\nb=%d\n",f->a,f->b);
}
void main(){
    struct para p;
    p.a="abc";
    p.b=12;
    print(&p);
}

如果定义结构体指针,一定要先为其分配空间,不然后面赋的值没地方存放啊。用malloc分配,记得加上头文件。
不过结构体指针引用结构体成员,就要用->这个符号了。

#include <stdio.h>
#include<stdlib.h>
struct para{
char *a;
int b;
};

void print(struct para *f){
    printf("a=%s\nb=%d\n",f->a,f->b);
}
void main(){
    struct para *p;
    p=(struct para*)malloc(sizeof(struct para));
    p->a="abc";
    p->b=12;
    print(p);
}

这好像是大一学的内容,都快毕业了竟然忘记了,都不好意思说自己是计算机专业的了……

时间: 2024-08-18 21:41:02

c语言——结构体做函数参数的相关文章

结构体做函数参数

结构体值栈空间内存模型 { int i = 0; for (; i < num; i++) { printf("age : %d\n",array[i].age); } } void sortTeacher(Teacher *array,int num) { int i,j; Teacher tmp; for (i = 0; i < num; i++) { for (j = i+1; j < num; j++) { if (array[i].age > arra

结构体做函数参数2

1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 6 typedef struct Teacher 7 { 8 char name[64]; 9 int age; 10 int id; 11 }Teacher; 12 13 void printTeacher(Teacher *array, int num) 14 { 15 i

C语言结构体及函数传递数组参数示例

注:makeSphere()函数返回Sphere结构体,main函数中,调用makeSphere()函数,传递的第一个参数为数组,传递的数组作为指针. 版权声明:本文为博主原创文章,未经博主允许不得转载.

C语言 结构体作为函数的参数

1)使用结构体变量作为函数的参数 使用结构体变量作为函数的实参时,采用的是值传递,会将结构体变量所占内存单元的内容全部顺序传递给形参,形参必须是同类型的结构体变量 demo: 1 # include <stdio.h> 2 # include <stdlib.h> 3 4 //创建一个Student结构 5 struct Student 6 { 7 char name[30]; 8 float fScore[3]; 9 }student={"dire",98.5

C语言结构体及函数传递数组參数演示样例

注:makeSphere()函数返回Sphere结构体,main函数中.调用makeSphere()函数,传递的第一个參数为数组,传递的数组作为指针.

C语言中结构体在函数中的应用

一.结构体与函数参数结构体作函数参数可分为传值与传指针.1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下,由于涉及到结构体参数的拷贝,程序空间及时间效率都会受到影响,所以这种方法基本不用.例如:typedef struct tagSTUDENT{char name[20];int age;}STUDENT; void fun(STUDENT stu){printf("stu.name=%s,stu.

【学习笔记】【C语言】结构体和函数

1 #include <stdio.h> 2 struct Student 3 { 4 int age; 5 int no; 6 }; 7 8 // 如果结构体作为函数参数,只是将实参结构体所有成员的值对应地赋值给了形参结构体的所有成员 9 // 修改函数内部结构体的成员不会影响外面的实参结构体 10 void test(struct Student s) 11 { 12 s.age = 30; 13 s.no = 2; 14 } 15 16 // 会影响外面的实参结构体 17 void te

C语言——结构体

C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它允许内部的元素是不同类型的. 1.定义形式 结构体内部的元素,也就是组成成分,我们一般称为"成员". 结构体的一般定义形式为: 1 struct 结构体名{ 2 3 类型名1 成员名1; 4 5 类型名2 成员名2; 6 7 …… 8 9 类型名n 成员名n; 10 11 }; struct是关键字,是结构体类型的标志. 四.结构体的注意点 1.不允许对结构体本身递归定义 2.结构体内可以包含别的结构体 3.定义结构体类型,只

Go语言结构体(struct)

Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型. 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性: title       :书名 author   :作者 address       :地址 mobile         :手机号 publisher     :出版社 定义结构体 结构体定义需要使用 type 和 struct 语句.struct 语句定义一个