C语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数
2013-09-08 21:51
295 查看
C语言学习笔记
之 结构体指针变量
一提指针,那可是C语言的核心了,有多少学子曾拜倒在指针的脚下。单纯的说指针,其实并不难,但是与其它的结构搭配在一起,那可就愁死人了。比如说:数组一点都不难,但是与指针一起用,可就经常麻烦了。结构体也是一种结构,它与指针搭配怎么样呢? 一起来看一下吧!1:结构体指针变量
和指针指向数组首地址一样,指针也可以指向结构体的起始地址。形式形如: struct student *p;上述语句定义了一个指针变量p,它指向任何一个属于struct student 类型的数据。通过指针去访问所指结构体变量的某个成员时,有两种方法: (*p).score 或者 p->score(这是一种常用的方式。->是指向运算符)比如:访问的时候:(*p).num=11031,或者 p->num=11031。
2.程序实例
#include <stdio.h> /*定义结构体*/ 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].score); } } |
3.指针符号(->)
P->num | P指向的结构体中的成员 |
P->num++ | 先得到p所指向的结构体成员num,然后使该num的值加1 |
++p->num | 先p所指向成员num的值加1,然后引用这个新的值 |
(p++)->num | 先引用p->num的值,用完之后再使p加1 |
(++p)->num | 先p加1,然后引用p->num的值 |
4.结构体变量和结构体指针变量做函数参数
结构体变量以及结构体指针变量均可以像int类型那样作为函数的参数。#include <stdio.h> /*定义结构体*/ 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',18,483.59} }; /*输出函数,结构体变量s做为函数参数*/ void print(struct student s) { printf("%s,%d,%f\n",s.name,s.age,s.score); } /*增加成绩的函数,结构体指针q作为函数参数*/ void add(struct student *q) { if(q->age<=19) q->score=q->score+10; } main() { struct student *p; int i; for(i=0;i<3;i++) { print(stu[i]);//stu[i]作为形参 } for(i=0,p=stu;i<3;i++,p++) { add(p);//指向stu的指针变量p作为形参 } printf("\n"); for(i=0,p=stu;i<3;i++,p++) { print(*p);//*p作为形参,相当于stu[i] } } |
语言struct student add(struct student *q) { if(q->age<=19) q->score=q->score+10; return *q } |
相关文章推荐
- C语言学习笔记_5函数与程序结构
- C语言结构体变量和结构体变量的指针作函数参数例题
- C语言学习笔记【函数】函数调用与变量的作用域
- (原创)c#学习笔记06--函数02--变量的作用域01--其他结构中变量的作用域
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- iOS开发学习笔记 2-6 C语言部分 函数及变量的作用域
- C语言学习笔记:13_变量和函数的声明与定义
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析 .
- C语言学习笔记【结构体01】结构体变量与结构体数组
- 2.关于结构体以及结构体数组作为函数入口参数的方法(学习笔记)
- c语言学习笔记30之函数参数
- C语言再学习之:结构体引用为函数参数
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- C语言中指针变量作为函数参数和一般变量作为函数参数的区别
- C语言学习笔记-----伊能---函数可变参数
- [c++学习笔记]反汇编角度看变量名和引用作为函数参数
- javascript学习笔记(二):定义函数、调用函数、参数、返回值、局部和全局变量
- python学习笔记11(函数二): 参数的传递、变量的作用域
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。