C语言_了解下结构体指针
在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。当然也可以指向结构体,先看一个小案例:
#include <stdio.h>
#include <string.h>
typedef struct PERSON {
int age;
int height;
char name[];
} Person;
int main (){
Person p = {, , "phper"}; //别名
Person *p_s = &p; //定义结构体指针
printf("%d\t%d\t%s",p_s->age, p_s->height, p_s->name); //等价于 (*p_s).age (*p_s)表示p_s指向的结构体变量
return ;
}

再看一个案例:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
typedef struct PERSON {
int age;
int height;
char name[];
} Person;
int main (){ Person *p_s = (Person *)malloc(sizeof(Person)); //计算结构体Person大小,并分配相应的内存空间,也可以传参(struct PERSON),再强制转化指针格式
memset(p_s, , sizeof(Person)); //分配好空间内容是随机的,用函数初始化全部清空为0 //指针指向的是p_s的首地址
printf("请输入年龄:");
scanf("%d", &p_s->age);
printf("请输入身高:");
scanf("%d", &p_s->height);
printf("请输入名字:");
scanf("%s", p_s->name);
printf("%d\t%d\t%s",p_s->age, p_s->height, p_s->name); //等价于 (*p_s).age (*p_s)表示p_s指向的结构体变量
return ;
}

指向数组结构体的指针案例:
# include <stdio.h>
# include <stdlib.h>
# include <string.h> //创建一个结构体
struct Programmer
{
int salary;
int experience;
char type[]; }programmer[]=
{
{, , "PHP"},
{, , "GO"},
{, , "JAVA"},
}; int main ()
{
struct Programmer *pProgrammer;
int index;
pProgrammer = programmer;
for(index=; index<; index++,pProgrammer++) //index++后面还有一句控制着指针的移动,循环完一次,指针将指向下一个地址中的成员
{
printf("编号%d \n",index+);
printf("薪资:%d\n", pProgrammer->salary);
printf("经验-年:%d\n", pProgrammer->experience);
printf("岗位:%s\n", pProgrammer->type);
}
printf("pProgrammer:%d\n&student[2]:%d\n",pProgrammer,&programmer[]);
return ;
}

C语言_了解下结构体指针的更多相关文章
- go语言之进阶篇结构体指针类型匿名字段
1.结构体指针类型匿名字段 示例: package main import "fmt" type Person struct { name string //名字 sex byte ...
- 嵌入式-C语言基础:通过结构体指针访问结构体数组
#include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...
- C结构体指针的初步使用
#include <stdio.h> #include <string.h> struct Books { char title[50]; //char author[100] ...
- 【C语言入门教程】7.3 结构体指针的定义和引用
C 语言中指针的操作非常灵活,它也能指向结构体变量对结构体变量进行操作.在学习结构指针之前,需要再次加深对指针的认识.声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围,如果指针 ...
- c语言结构体指针初始化
今天来讨论一下C中的内存管理. 记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以前做二叉树算法时,他的左 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- C语言结构体指针初始化(转)
reference: https://www.cnblogs.com/losesea/archive/2012/11/15/2772526.html 今天来讨论一下C中的内存管理. 记得上周在饭桌上和 ...
- C语言结构体指针(指向结构体的指针)详解
C语言结构体指针详解 一.前言 一个指向结构体的变量的指针表示的是这个结构体变量占内存中的起始位置,同样它也可以指向结构体变量数组. *a).b 等价于 a->b. "."一 ...
- c语言中的结构体指针类型的cast
1.我们在c语言中会经常碰到强制类型转换. 在这,我介绍一种结构pointer类型转换,但是有前提(有点类似于c++中的继承中的子父对象的cast). 简单的介绍一下: 首先我们要知道一个结构的指针, ...
随机推荐
- set&enum小结(database)
今天发现mysql中有set这种数据类型,工作的业务中也使用到了.网上查阅资料后,小结一下 先总结一下两者的分别 set和enum类似表单中的多选和单选,set和enum在数据库内部是用整数表示的,显 ...
- pipeline结合GridSearchCV的一点小介绍
clf = tree.DecisionTreeClassifier() ''' GridSearchCV search the best params ''' pipeline = Pipeline( ...
- python2.7.5 安装pip 良心推荐,超级简单.
1 先安装setuptools 下载地址:https://pypi.python.org/pypi/setuptools#downloads 将下载后的tar文件解压,用CMD模式进入到解压后的文件所 ...
- Windows ftp脚本和RSCD agent自动安装脚本
Windows ftp脚本 和bladelogic RSCD Agent自动安装脚本 比较简单的命令是msiexec /I "C:\RSCD85-SP1-WIN64.msi" /Q ...
- springMVC中@RequestParam和@RequestBody注解的用法
springMVC中@RequestParam注解用在Controller层获解析.提取参数,当然你也可以用request.getParameter("name")来获取参数,而@ ...
- 如何用Python爬虫实现百度图片自动下载?
Github:https://github.com/nnngu/LearningNotes 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或 ...
- MySQL备份利器-xtrabackup的介绍和原理(附脑图)
标签(linux): mysql-xtrabackup 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 xtrabackup是Percona公司针对mysql数据 ...
- iometer测试工具
简介 Iometer 为计算机I/O子系统所作的工作就如同测力计为引擎所作的工作一样:它测定在可控制的负荷下系统的性能.Iometer 以前被称为"伽利略". Iometer 既是 ...
- linux监控下几个系统工具
1.top 2.htop(yum install -y htop) 3.glances(yum install -y glances) 4.dstat -l -c -m -d -r -n --top ...
- 1、突然对jQuery的心血来潮
起因 随着饿百新零售项目一期的告一段落,算是暂时从加班的修罗场里面解放出来了,于是就想搞点事情,正好看项目js库的时候发现了躺在角落的jQuery,想到当初看源码的时候断断续续的没有看完一直是心头的遗 ...