C语言 指向结构体数组的指针
当结构体指针变量指向一个结构体变量数组的时候,此时指针变量的值就是结构体数组的首地址
关于如何定义结构体数组,和将结构体指针指向结构体变量数组,不是重点。
重点是,明白结构体指针的是怎么移动的, 我个人理解 指针==地址 用指针操作的就是地址
demo:
# include <stdio.h>
# include <stdlib.h> //创建一个结构体
struct Student
{
char cName[];
int iNumber;
char cSex;
int iGrade; }student[]=
{
{"瑶瑶",,'W',},
{"yy",,'M',},
{"500days",,'Y',},
}; int main ()
{
struct Student *pStruct;
int index;
pStruct = student;
for(index=; index<; index++,pStruct++)
{
printf("NO%d student's information\n",index+);
printf("Name:%s\nNumber:%d\nSex:%c\nGrade:%d\n",pStruct->cName,pStruct->iNumber,pStruct->cSex,pStruct->iGrade);
}
printf("pStruct:%d\n&student[2]:%d\n",pStruct,&student[]);
return ;
}
第26行,index++后面还有一句控制着指针的移动,循环完一次,指针将指向下一个地址中的成员
大概图示是这样的:没好好写:) 所以字体..呵呵呵 凑合看把:)
程序运行结果:
NO1 student's information
Name:瑶瑶
Number:908
Sex:W
Grade:2017
NO2 student's information
Name:yy
Number:606
Sex:M
Grade:2017
NO3 student's information
Name:500days
Number:500
Sex:Y
Grade:2017
pStruct:6294176
&student[2]:6294176
输出&student[3]的值
输出pStruct的值
它们相等! 所以我”想当然“ 的是对哒
C语言 指向结构体数组的指针的更多相关文章
- c语言指向结构体数组的指针
#include <stdio.h> #include <stdlib.h> struct dangdang { ]; ]; ]; int num; int bugnum; ] ...
- C语言 指向结构体变量的指针
一个指向变量的指针表示的是占内存中起始位置 一个指向结构体的变量的指针表示的是这个结构体变量占内存中的起始位置,同样它也可以指向结构体变量数组 定义结构体变量的指针: //假设已有一个结构体名为Stu ...
- C/C++中指向结构体变量的指针,调用指向的那个结构体中的成员
设p是指向结构体变量的指针,则可以通过以下的方式,调用指向的那个结构体中的成员: (1)结构体变量.成员名.如,stu.num. (2)(*p).成员名.如,(*p).num. (3)p->成员 ...
- C语言利用结构体数组实现学生成绩管理系统
这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...
- C语言--指向多维数组的指针和指针数组
#include <stdio.h> //void show(char *p[]); ]); int main(){ ][]={","abc","x ...
- c语言指向结构体的指针作为函数参数
注意 这里包括形参和实参 struct dangdangtest { ]; int num; }; void change(int num)//值传递 新建一个变量接受传递的值 { num = ; } ...
- C语言:将结构体数组的成绩按照从小到大进行排序。
#include<stdio.h> typedef struct student { char *name; int sno; int age; float score; }Student ...
- c语言中结构体指针
1.指向结构体的指针变量: C 语言中->是一个总体,它是用于指向结构体,如果我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体.那么我们要用指针取出结构体中的数据.就要用到指向运 ...
- 重学C语言之结构体
概念 结构体是一种构造类型,由若干个成员组成,成员可以是基本数据类型,或是另一个结构体 声明结构体 struct 结构体名 { 成员列表 }; 结构体名表示结构的类型名. 声明一个结构体表示创建一种新 ...
随机推荐
- Ubuntu 查看默认软件安装位置
tags: Linux 方法 1:在命令行输入:dpkg -L 软件包名: 方法 2:在/var/cache/apt/archives找的你安装程序的包,然后用gdebi-gtk+软件包名可以查看具体 ...
- poj 2528 Mayor's posters 线段树 || 并查集 离线处理
题目链接 题意 用不同颜色的线段覆盖数轴,问最终数轴上有多少种颜色? 注:只有最上面的线段能够被看到:即,如果有一条线段被其他的线段给完全覆盖住,则这个颜色是看不到的. 法一:线段树 按题意按顺序模拟 ...
- C++学习(一):现代C++尝试
C++是一门与时俱进的语言. 早期的C++关注的主要问题是通用性,却没有太多关注易用性的问题,使得C++成为了一门多范式语言,但是使用门槛较高. 从2011开始,C++的标准进行了较大的更新,开始更多 ...
- 学习环境配置:Manjaro、MSYS2以及常见软件
0.前言 在说Manjaro之前,要先说一下Linux发行版.对于各大发行版而言,内核只有版本的差异,最重要的区别就是包管理系统.常见的包管理系统包括:Pacman,Apt , Yum和Portage ...
- JQuery操作基本选择器
<body> <input type="button" id="btn1" value="选择为one的元素"/> ...
- hdu 4524(模拟)
郑厂长系列故事——逃离迷宫 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- hdu 2685(数论相关定理+欧几里德定理+快速取模)
I won't tell you this is about number theory Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- python-re之中文匹配
#coding=utf-8 import re import chardet#检测网页编码形式的模块 p = re.compile(r'\d+') print p.findall('one1two2t ...
- 深入V8引擎-Time核心方法之win篇(1)
上一篇的源码看得十分无趣,官方文档跟黑心棉一样渣. 这一篇讲讲windows操作系统上的时间戳实现,由于类的声明,方法解释上一篇都贴过了,所以这次直接上对应版本的代码. windows与mac很不一样 ...
- php设置报错级别
ini_set("display_errors", "On");//若页面不报错的话,请设置php.ini 的display_errors 为 On error ...