小总结: 什么类型的指针,就是这个指针指向什么类型的变量

结构体指针: 就是指向结构体变量的指针
结构体的首地址,就是结构体第一个成员变量的首地址
stu *p = NULL;
stu s1 = {“lizongrui”,18,’m’};
p = &s1;
printf(“%p\n”,p);
printf( “%p\n”,&s1 );
printf( “%p\n”,&s1.name); // 打印的结果相同,都是首地址
printf(“%s\n”,s1.name); // lizongrui
// *p1 等价于 s1
int *p1 = NULL
int a= 20;
p1 = &a; // 此时,*p1等价于 a
printf(“%d\n”,(*p).age);

// 指向操作符 ->
// -> 前面只能是结构体指针变量,而且必须是指向结构体变量首地址的结构体变量

printf( %d\n”,p->name);


//练习: 1.定义一个老师结构体
//2.创建结构体变量
//3.创建结构体指针指向结构体变量
//4.判断如果老师名字的首字符不是大写,改为大写,并且将其年龄+10岁;如果首字符是大写,年龄-10;

/* Teacher teacher1 = {“Xiangge”,30,”avmovie”};
Teacher *t = &teacher1;
if (t->name[0] >= ‘a’ && t->name[0] <=’z’ ) {
// t->name 是name的首字符地址,而这里是需要进行字符的判断,需要标明第几个字符。
t->name[0] -= 32;
t->age += 10;
}
else{

    t->age -= 10;
}printf("%s %d %s\n",t->name,t->age,t->hobby);
  • 以下两个常量可以用来做整型的取最大值和最小值:

    • INT_MAX // 整型中可以出现的最大值
    • INT_MIN // 整型中可以出现的最小值

结构体数组和指针:

Student stu[5] = {

    {1,"guanXi",'m',19,90},{3,"tingfeng",'m',20,91},{2,"bozhi",'w',18,99},{5,"lizongrui",'y',30,59},{4,"zhaosi",'y',40,100}};

数组名就是指针,指向数组的首地址,也是数组首个元素的地址
*stu 等价于 stu[0]
*(stu+1) 等价于 stu[1]
··· ···

访问数组中的元素的姓名成员变量
(*stu).name = stu[0].name
( (*stu+1) ).name = stu[1].name
··· ···

使用指针操作符 -> 来访问数组中元素
stu-> name = stu[0].name
( stu+1)->name = stu[1].name
( stu+2 )->name = stu [2].name
··· ···
printf( (stu+3)->name,”ajiao”);
printf(“%s\n”,(stu+3)->name);

// 定义一个指向结构体数组
Student *p1 = stu;
printf(“%s\n”,p1[0].name);
printf(“%s\n”,p1->name);
printf(“%s\n”,(*p1).name); // 输出结果相同


指针数组 数组中的元素都是指针(地址)

int a = 3,b = 4,c = 5,d = 6;
int p1 = &a;// &a 的类型就是 int
int array[4] = {&a,&b,&c,&d}; // 由于数组中每个元素的类型都是int ,所以数组的类型也应是int *
printf(“数组所占内存大小:%lu\n”,sizeof(array));
//访问数组中的元素
// 方式一
printf(“%p\n”,array[0]); //由于数组中的元素地址,所以使用%p.
printf(“%p\n”,&a);
printf(“%p\n”,array[1]);
// 方式二
printf(“%p\n”,*array);
printf(“%p\n”,*(array+1));

// 访问指针数组中元素指向内存空间里存储的值
printf("%d\t",*array[0]);
printf("%d\t",*array[2]);
printf("%d\t",*array[3]);
printf("%d\n",*array[1]);printf("%d\t",*(*array));  // *array  取出的是地址  **array  才是取出地址所指向的值
printf("%d\t",**(array+1));

iOS——结构体指针相关推荐

  1. Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针

    Go 语言中没有 "类" 的概念,也不支持 "类" 的继承等面向对象的概念.Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法. 1. 结 ...

  2. c++队列指针 结构体指针

    RevData中如果放的是对象数据,不是char* int,可以用如下方式: RevData *recvD =new RevData; recvD.size = i; strcpy(recvD.dat ...

  3. c++ map嵌套队列(队列嵌套结构体指针)ok

    map中嵌套队列,队列中是结构体,有一个问题,结构体中的值不更新 #include <iostream> #include <queue> #include<map> ...

  4. [知识复习] 结构体以及结构体指针

    结构体 struct node { int data; char sex; }s1,s2;                         //-------------变量s1,s2 typedef ...

  5. Android JNI编程(六)——C语言函数指针、Unition联合体、枚举、Typedef别名、结构体、结构体指针...

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:函数指针 1.函数指针顾名思义就是定义一个指针变量指向一个函数,和一级指 ...

  6. C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?

    C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题? 问题1:结构体指针最开始怎么分配内存?用sizeof()是不能确定大小的. 问题2:给结构体变量分配之后,是否还要 ...

  7. C代码开发遇到的问题 变量初始化和结构体指针移动

    1. 变量初始化 函数内部的变量如果不初始化的话默认不是0而是一个随机值. 下面的程序用来打印一个未初始化的无符号的整型值,执行几遍,每次的结果都会不一样 #include <stdio.h&g ...

  8. 结构体指针struct stu *p;和结构体变量struct stu p;结构体为什么要用指针引用而不用变量引用

    只有"指针变量名"后面才能加"->",用指针取出结构体中的数据,就要用到"->",千万不要在成员名如 birthday 后面加& ...

  9. 定义一个结构体指针需要分配存储空间

    link 问题:定义结构体指针时,有没有同时分配存储空间啊?看到结构体的数组定义好以后就直接可以用了.但是结构体指针在链表中还要malloc()申请空间.这是为什么啊? 答案:定义结构体指针时并没有分 ...

  10. 结构指针的坑之(定义结构体指针时并没有分配存储空间,所以要用malloc()申请空间)

    这段代码会报错,核心转储 #include<stdio.h> #include <string.h>struct role // 定义一个结构体 { // char name[ ...

最新文章

  1. python asyncio与aiohttp_python链家网异步IO爬虫,使用asyncio、aiohttp和aiomysql
  2. 线性代数:第三章 矩阵的初等变换与线性方程组(1)矩阵的初等变换 矩阵的秩
  3. JS正则表达式验证数字非常全
  4. Windows 7中的远程桌面增强(Graphics Remoting, Remote Desktop)
  5. 工程验收工作笔记001---系统等保级别_系统等级保护
  6. LeetCode_database刷题记录(595. 大的国家)
  7. 你愿意一辈子当一个打工的吗
  8. JavaWeb-Web请求过程
  9. docker运行jenkins挂掉_docker搭建jenkins
  10. C语言——恶搞之关机代码
  11. CANoe软件中制作DBC文件的小教程
  12. php有没有ispostback,php用什么表示IsPostBack?
  13. nina数据库的采样频率_急求!!!什么是时域采样定理和频域采样定理?
  14. CSS3选择器(全部)
  15. 关于语法节点Tree、类型Type和符号Symbol
  16. 清华大学梁宸计算机系,2015年自主招生--五大联赛银牌争夺战
  17. 《上古卷轴5:天际》控制台代码之配料药剂
  18. 纹理识别——GLCM空间灰度共生矩阵
  19. 推荐|微信朋友圈营销的新尝试
  20. 土地利用程度综合指数计算/argis教程

热门文章

  1. 航天信息上传服务器地址,金税盘上传参数设置怎么设置?
  2. 计算机 二进制 知识,[转载]计算机知识--二进制,十进制,十六制算法
  3. 中国计算机类核心期刊
  4. lol12.11服务器维护,LOL2018年11月13日更新维护到几点
  5. C++超详细五子棋游戏(AI实现人机对弈+双人对弈+EasyX图形化界面+详细介绍)
  6. Mac 安装Nessus
  7. javascript计算两个时间差
  8. 淘宝数据分析必须知道的15个核心问题
  9. 微信小程序实现文件上传
  10. 【SpringBoot 】 组件管理 ,java工程师面试突击中华石杉