指针和结构体

指针
1.为什么要有指针的存在?
利用地址,找到所需的变量单元,而这个地址保存在了一个变量中,指针的存在是为了便于寻址。
2.指针的大小
在64位平台是8个字节,在32位平台是4个字节。
3.指针和整数的加减
比如说

#include<stdio.h>
int main()
{
int n=10;
int *pc=&n;
printf("%p",pc+1);

这里指针pc+1,这个1并不是字节的大小,取决于指针类型的大小。
所以,二级指针及其以上的+1都是+4。
补充:
这里有一个大端和小端的概念。
数据权值从低到高,地址从小到大,就是小端。否则就是大端。
4.指针和指针的加减
两个指针(指向同一数组或字符串)相减,代表两个指针之间的元素个数,这个个数由指针类型决定。
指针和数组没有任何关系
规定:允许数组元素的指针与指向数组后面的那个内存位置的指针比较,但是不可以与第一个元素之前的指针进行比较。
int arr[];
int*p=arr;
p+i计算的的arr下标为i的地址。
5.指针数组
到底是指针还是数组,由操作符的优先级决定。

结构体
1.初始化和定义

struct Point
{
      int x;
      int y;
 }p1;//声明p1
 struct Point p2;//定义p2

结构体初始化的特点和数组的初始化几乎严格一致。
2.结构体的访问
使用( . )访问或者定义一个指针指向结构体然后使用指针来访问
例如:struct Stu*=&s;
3.结构体传参时要传地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值