精华内容
下载资源
问答
  • C 语言学习笔记结构体 02结构体指针变量与结构体变量函数参数 C 语言学习笔记之 结构体指针变量一提指针 那可 是 C 语言的核心了有多少学子曾拜倒在指针的脚下单纯的说指针其实并不难但是与其它的结构搭配在一起...
  • C 语言学习笔记【结构体02】结构体指针变量与结构体变量函数参数C 语言学习笔记之结构体指针变量一提指针,那可是 C 语言的核心了,有多少学子曾拜倒在指针的脚下。单纯的说指针,其实并不难,但是与其它的结构...

    C 语言学习笔记【结构体02】结构体指针变量与结构体变量

    的函数参数

    C 语言学习笔记之结构体指针变量一提指针,那可

    是 C 语言的核心了,有多少学子曾拜倒在指针的脚下。单纯的说指针,其实并不难,但是与其它的结构搭配在一起,那

    可就愁死人了。比如说:数组一点都不难,但是与指针一起用,可就经常麻烦了。结构体也是一种结构,它与指针搭配怎么样呢? 一起来看一下吧! 1:结构体指针变量和指针指向数组首地址一样,指针也可以指向结构体的起始地址。

    形式形如:structstudent*p; 上述语句定义了一个指针变

    量 p,它指向任何一个属于 struct student 类型的数据。通过指针去访问所指结构体变量的某个成员时,有两种方法:

    (*p).score或者p->score( 这是一种常用的方式。->

    是指向运算符 )比如:访问的时候:(*p).num=11031, 或者

    p->num=11031 。

    2.程序实例

    1234567891011121314151617181920212223242526272829303

    132#include /*定义结构体 */struct

    student{

    int num;

    char name[20];

    char sex;

    int age;

    float score;};/*

    初始化一个结构体实例

    */struct student

    stu[3]={

    {11302,"Wang",'F',20,486.69},

    {11303,"Zhao",'F',25,466.59},

    {11304,"Xue",'M',26,483.59}};main(){

    /* 初始化一个

    student1

    的实例

    */

    struct student

    student1={11305,"Li",'F',19,59.59};

    struct student *p,*q;//

    定义

    struct student

    类型的指针

    int i;

    p=&student1;//

    student 1 的结构体的首地址赋给

    p,也就

    是 p 指向了

    student 1 的首地址

    /* 输出:可以看到,访问

    结构体的成员,有三种方法

    */

    printf("%s,%c,%f\n",student1.name,(*p).sex,p->score);

    q=stu;// 将数组

    stu

    的首地址赋给

    q;

    /*for

    循环输出数组中

    的成员

    */

    for(i=0;i<3;i++,q++)

    {printf("%s,%c,%f\n",q->name,(*q).sex,stu[i].scor

    e);}}

    展开全文
  • 命名变量结构体函数指针.xlsx
  • 结构体函数指针

    2019-06-02 09:26:46
    函数指针的定义 一般的函数指针可以这么定义: int(*func)(int,int); 表示一个指向含有两个int参数并且返回值是int形式的任何一个函数指针. 假如存在这样的一个函数: int add(int x,int y) { return x+y; }...

    函数指针的定义

    一般的函数指针可以这么定义:

    int(*func)(int,int);

    表示一个指向含有两个int参数并且返回值是int形式的任何一个函数指针. 假如存在这样的一个函数:

        int add(int x,int y)
        {
            return x+y;
        }
    


    那么在实际使用指针func时可以这样实现:

    func=&add; //指针赋值,或者func=add; add与&add意义相同
    
    printf("func(3,4)=%d\n",func(3,4));

    结构体中包含函数指针

    其实在结构体中,也可以像一般变量一样,包含函数指针变量.下面是一种简单的实现.

    #include <stdio.h>  
    struct TEST  
    {  
    	int x,y;  
    	int (*func)(int,int); //函数指针  
    };  
      
    int add1(int x,int y)  
    {  
    	return x*y;  
    }  
      
    int add2(int x,int y)  
    {  
    	return x+y;  
    }  
      
    void main()  
    {  
    	struct TEST test;  
    	test.func=add2; //结构体函数指针赋值  
    	//test.func=&add2; //结构体函数指针赋值  
    	printf("func(3,4)=%d\n",test.func(3,4));  
    	test.func=add1;  
    	printf("func(3,4)=%d\n",test.func(3,4));  
    }  
      
    /* 
    输出: 
    func(3,4)=7 
    func(3,4)=12 
    */  
    


    C语言中,如何在结构体中实现函数的功能?把结构体做成和类相似,让他的内部有属性,也有方法
    这样的结构体一般称为协议类,提供参考:

    #include <stdio.h>  
      
    typedef struct  
    {  
    int a;  
    void (*pshow)(int);  
    }TMP;  
      
    void func(TMP *tmp)  
    {  
        if(tmp->a >10)//如果a>10,则执行回调函数。  
        {  
            (tmp->pshow)(tmp->a);  
        }  
    }  
      
    void show(int a)  
    {  
        printf("a的值是%d\n",a);  
    }  
      
    void main()  
    {  
        TMP test;  
        test.a = 11;  
        test.pshow = show;  
        func(&test);  
    }  
    


    结构体函数指针赋值

    一般使用如下方式给结构体的函数指针赋值,这也是linux内核中使用的方式:

    #include <stdio.h>  
      
    typedef struct  
    {  
    int a;  
    void (*pshow)(int);  
    }TMP;  
      
    void func(TMP *tmp)  
    {  
        if(tmp->a >10)//如果a>10,则执行回调函数。  
        {  
            (tmp->pshow)(tmp->a);  
        }  
    }  
      
    void show(int a)  
    {  
        printf("a的值是%d\n",a);  
    }  
      
    void main()  
    {  
        TMP test;  
        test.a = 11;  
        test.pshow = show;  
        func(&test);  
    }  
    


    原文:https://blog.csdn.net/Sophisticated_/article/details/82993051 
     

    展开全文
  • C语言结构体函数指针
    结构体所占的字节数:大于或者等于所有成员所占的字节的总和,并且是占字节最大成员所占字节数的整数倍
    结构体只能声明变量,不能声明函数,可以用函数指针
    函数指针定义:返回值(*函数指针名)(形参)
    #include "stdafx.h"
    
    struct Student
    {
    	short age;     //2个字节
    	char gender;   //1个字节
    	int score1;     //4个字节
    	double score2;  //8个字节
    	void(*study)();
    	double(*totalScore) (int,double);  //定义函数指针
    };
    
    double calSumScore(int score1, double score2) {
    	return score1 + score2;
    }
    
    void mustStudyHard() {
    	printf("We must study hard!\n");
    }
    
    int main() {
    	//struct关键字不能省去
    	struct Student student = {18,'f',99,99.5};
    	student.totalScore = &calSumScore;  //结构体中定义的函数指针指向具体的函数
    	student.study = &mustStudyHard;
    	student.study(); //调用
    	printf("totalScore=%.2f\n", student.totalScore(student.score1, student.score2)); //调用
    	printf("年龄:%hd,所占字节:%d\n",student.age,sizeof(student.age));
    	printf("性别:%c,所占字节:%d\n",student.gender, sizeof(student.gender));
    	printf("分数:%d,所占字节:%d\n",student.score1, sizeof(student.score1));
    	printf("结构体占:%d个字节\n",sizeof(student));
    
    	//结构体指针,指针指向student这个变量
    	struct Student* stu = &student;
    	stu->score1 = 80;
    	stu->score2 = 86.4;
    	printf("totalScore=%.2f\n", stu->totalScore(stu->score1, stu->score2));
    	return 0;
    }


    展开全文
  • 结构体变量和结构体指针变量形参的函数调用 指针和数组作为函数形参的区别 概念 结构体变量是指将不同的数据类型整合成一个有机的整体,以便于调用。 struct Student { int num; char name[20]; int score...

    目录

    概念

    内存分配

    对象的引用

    结构体变量和结构体指针变量作形参的区别

    以结构体变量和结构体指针变量形参的函数调用


     

    概念

    结构体变量是指将不同的数据类型整合成一个有机的整体,以便于调用。

    struct Student
    {
        int num;
        char name[20];
        int score;
    }
    
    Student stud1;//stud1就是结构体变量

    结构体指针变量是指指向结构体变量的指针或者指向结构体数组的指针。

    Student *stud2;//结构体指针变量

    内存分配

    在C语言中都是使用库函数malloc和free来分配和撤销内存空间的。C++中提供了较简便而功能较强的运算符new和delete来取代函数malloc和free函数。注意:new和delete是运算符,不是函数。

    int main
    {
        Student *p
        p = new Student    //用new运算符开辟一个存放Student型数据的空间
        .
        .
        .
        delete p;         //使用完之后一定要撤销该空间
        
        return 0;
        
    }

    对象的引用

    结构体变量引用成员变量的方式是:

    结构体变量名.成员变量名

    指针引用结构体变量成员的方式是:

    (*指针变量名).成员变量名 //*指针变量名 两边的括号不可以省略
    
    指针变量名->成员名    //->”是“指向结构体成员运算符”,它的优先级同结构体成员运算符“.”一样高。

    结构体变量和结构体指针变量作形参的区别

    结构体变量作为函数形参。此时sc_para和tm_para传递的是两个结构体变量,包含其内部所有的成员变量,占用的内存空间自然而然就大,具体大小取决于结构体变量的大小。

    int REF_STRUCT_PARAM(
                SC_PARAMS sc_para,
                TM_PARAMS tm_para
                )    //SC_PARAMS和TM_PARAMS是两个结构体类型

    结构体指针变量作为函数形参。此时*sc_para和*tm_para传递的是两个指针变量,一个指针只占用四个字节空间,而且存储的是结构体变量的首地址。修改为指针后速度变快,占的内存空间也减小。

    int REF_POINTER_PARAM(
                SC_PARAMS* sc_para,
                TM_PARAMS* tm_para
                )    //SC_PARAMS和TM_PARAMS是两个结构体类型

    以结构体变量和结构体指针变量形参的函数调用

    以结构体变量作形参的函数的调用,函数形参部分直接调用定义的结构体名即可。

    int main
    {
    
        SC_PARAMS sc_para;
        TM_PARAMS tm_para;
    
    
        int REF_STRUCT_PARAM(sc_para, tm_para);  //SC_PARAMS和TM_PARAMS是两个结构体类型
    
        return 0;
    }

    以结构体指针变量作形参的函数的调用,函数形参位置要引用结构体地址。

    
    int main
    {
    
        SC_PARAMS* sc_para;
        TM_PARAMS* tm_para;
    
    
        int REF_POINTER_PARAM(&sc_para, &tm_para);  //SC_PARAMS和TM_PARAMS是两个结构体类型
    
        return 0;
    }

     

     

     

     

     

    展开全文
  • 最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用。 1.结构体类型定义 定义方式1: Typedef struct LNode { int data; // 数据域 struct LNode *next; // 指针域 } *...
  • C语言结构体封装函数指针 C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。例如,在校学生有姓名、年龄、身高、成绩等属性,学了...
  • CC语言学习笔记【结构体02】结构体指针变量与结构体变量函数参数C语言学习笔记之结构体指针变量一提指针,那可是C语言的核心了,有多少学子曾拜倒在指针的脚下。单纯的说指针,其实并不难,但是与其它的结构搭配在...
  • 结构体函数指针

    2015-11-17 20:38:54
    结构体的定义+函数指针
  • 结构体函数指针的高级封装应用
  • 将n个学生的数据表示为结构体变量,内含学生学号、姓名和三门课的成绩。要求输出平均成绩最高的学生的信息 (包括学号、姓名、3门课成绩和平均成绩)。 解题思路:将n个学生的数据表示为结构体数组(有n个...
  • 结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;… }; struct 结构体标识符 *指针变量名; 变量初始化一:struct结构体...
  • [中国寒龙联盟出品]C语言基础知识第十三课“指向结构体的指针与链表”指向结构体变量指针变量,指向结构体数组的指针变量,结构体数据作函数的参数,链表的概念,链表的操作,更多欢迎朋友们的支持!~请关注我们的...
  • 利用跳转结构体函数指针实现多级菜单 1、首先定义一个机构体如下 typedef struct { unsigned char current; unsigned chaup;//上键 unsigned chadown;//下键 unsigned chaenter;//确认键 void (*current_...
  • #include<stdio.h> #include<string.h> struct AGE { int year; int month; int day; }; struct STU { char name[20]; int num; struct AGE birthday;...void InputStu(struct ST...
  • 结构体函数指针初始化

    千次阅读 2018-08-17 23:01:36
    * 为结构体中的指针数组赋值 */ #include &lt;stdio.h&gt; typedef struct test { void (*p)(void); void (*q)(void); void (*y)(void); }test; void f1(void) { printf("f1\n"); } ...
  • 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩) 代码实现#include #define N 3 //学生数为3 struct Student ...
  • 结构体指针作为函数参数时,调用时传递的是指向一个结构体变量指针(即 结构体变量的地址);结构体变量作为函数参数时,调用时传递的结构体变量本身。 即一个结构体A,当它的指针作为参数传入函数func,那么在...
  • * 为结构体中的指针数组赋值 */ #include &lt;stdio.h&gt; typedef struct test { void (*p)(void); void (*q)(void); void (*y)(void); }test; void f1(void) { printf("f1\n"); } ...
  • 怎样通过指向结构体变量指针访问结构体变量中成员。 #include <stdio.h> #include <string.h> struct Student{ long int num; char name[15]; char sex; float score; }; int main()...
  • 一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组的不同之处在于:每个数组...
  • 关于结构体变量和结构体指针变量函数的值传递 */#include #include struct Stduent { int age ; char sex[100] ; // 这表示顶一个一个结构体 char name[100]; //这个数据的类型是 struct Stduent 类型 }; ...
  • 关于指针结构体函数指针变量的赋值&的问题思路今天做到了结构体函数,需要用指针进行解决,之前一直搞不清一个问题,就是给指针赋值的时候赋值变量什么时候用&,什么时候不用。今天搞明白了,下面上图第一种情况:...
  • 02. * 为结构体中的指针数组赋值 03. */ 04. 05.#include 06. 07.typedef struct test 08.{ 09. void (*p)(void); 10. void (*q)(void); 11. void (*y)(void); 12.}test; 13. 14.void f1
  • 结构体变量定义:先定义结构体类型,再定义结构体变量 结构体变量的定义主要有3种形式 结构体类型与结构体变量概念的区别: (1)类型:不分配内存 变量:分配内存 (2)类型:不能赋值、存取、运算 变量:...
  • 例40:C语言实现通过指向结构体变量指针变量变量输出结构体变量中的信息。 解题思路:在主函数中声明了struct student类型,然后定义了一个struct student类型的变量s_1,又定义了一个指针变量p,它指向一个struct...
  • 通过指向结构体变量指针变量输出结构体变量中成员的信息。解:程序:#include<stdio.h>#include<string.h>int main(){struct Student{long int num;char name[20];char sex[10];float score;};struct ...
  • 代码区 #include #include main() { struct student { long num; char name[10]; }stu1,*p; p=&stu1; stu1.num=100; strcpy(stu1.name,"jenney"); //此处的赋值方法格外...指针变量的基类型必须与 结构体变量的类型相同
  • #include<stdio.h> #include<...program: 结构体指针、结构体变量嵌套、结构体指针嵌套、函数指针、数组指针、指针数组、typedef 综合运用 date : 2017.6.3 sum up : 结构体嵌套指针(函数指...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 149,554
精华内容 59,821
关键字:

结构体里面函数指针操作结构体变量