c 中 怎样动态定义二维结构体数组_剖析c语言结构体的高级用法(一)

                               前言                                 

 在写这篇文章之前,说实话,自身对结构体的用法,只会两点——就是点访问式和指针式访问结构体内部成员。这对一个搞底层的工程师来讲,显然实在太low了。不妨读者看到这里,可以停下来思索一下,看看自己对c语言结构体掌握了多少。下面是我这几天结合自己的学习而总结的一篇算比较全的关于结构体的用法,欢迎大家来吐槽。

     正文  

     其实在之前的文章里面,我已经有说为啥在c语言里面要引入结构体这一概念——超详细的链表学习,这里的话,我就不再废话了,直接来点实际的。

一、结构体的各种使用方法(很全):

  • 这里的话,我以实际例子直接开干,就不过多的介绍一些非常基础的东西(有没看明白的读者可以上网查)。
1、结构体传参:      a、先来看第一个实际例子(结构体指针做形参):
 1# include 
2# include 
3
4struct Student {
5    char name[20];
6    float fScore[3];
7}student = { "dire",98.5,89.0,93.5}; //初始化结构体变量 
8
9
10void Display(struct Student *pStruct)11{
12     printf("------Information-------\n");
13     printf("Name:%s\n",pStruct->name);
14     printf("Chinese:%.2f\n",(*pStruct).fScore[0]);
15     printf("Math:%.2f\n",(*pStruct).fScore[1]);
16     printf("English:%.2f\n",pStruct->fScore[2]);
17}
18
19
20int main ()21{
22        Display(&student);        //将结构体变量的首地址作为实参传入pStruct指针变量中 
23
24        return 0;
25}
演示结果:

9696828748b3ff68db3d5d624391ad34.png

说明:

         这里我们定义了一个结构体struct student  ,并且定义了结构体变量student,同时为结构体各个成员赋值,然后定义了一个函数,这个函数传参里面定义了一个结构体变量;然后我们在主函数里面把结构体变量的地址作为函数形参传入到函数里面去;然后在函数里面进行一些操作,比如正如你所见一样,都是在访问结构体成员,而且是指针式的访问(书上把"->"叫做箭头操作符),这个正如我上面开头所说,很常见,但你细心的话, 你发现了一个(*pStruct).fScore[0] 居然也能够访问成功 (看到这里想必你平时可能就没怎么看到这种写法了吧,哈哈哈。),这种写法也是可以的,下次见到就不要见怪 了。

    b、再来看一个示例(结构体变量做形参):

 1   #include 
2   typedef struct A{
3            int a;
4   }s;
5  void fun(s b) 6  {
7        b.a=99;
8        printf("the b.a is %d\n",b.a);
9 }
10 int main(void)11 {
12        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值