目录
一、指针内容讲解
1、内存
2、指针
3、指针变量的大小
二、结构体(接上篇文章)
在学习指针前,之所以要认识和理解内存,是因为指针是用来访问(管理)内存的。
内存 | |
一个字节 | 0XFFFFFFFF |
一个字节 | 0XFFFFFFFE |
一个字节 | .... |
一个字节 | 0X00000002 |
一个字节 | 0X00000001 |
一个字节 | 0X00000000 |
也可以想象成生活中一栋楼的房间编号,有了这样的编号,就可以快速的找到对于的房间。
拓展
bit | 存放1个二进制位 |
Byte | 1Byte = 8bit |
KB | 1KB = 1024Byte |
MB | 1MB = 1024KB |
GB | 1GB = 1024MB |
TB | 1TB = 1024GB |
PB | 1PB = 1024TB |
#include
int main()
{
int a = 10;
&a;//取出a的地址
printf("%p\n", &a); //打印地址,%p是以地址的形式打印
return 0;
}
注:此时在这个代码中这里a占4个字节,虽然每个字节都有地址,但是取出的是第一个字节的地址(较小的地址)。
在C语言中,也把地址叫做指针。(编号 == 地址 == 指针
举个例子
#include
int main()
{
int num = 10;
int *p = #
return 0;
}
其中p是个变量,用来存放a的地址,叫:指针变量,意思是存放指针的变量。
int *这个整体说明p的类型。
* 是说明p是指针变量。
int 说明p指向的是int类型的变量。
注:在这个代码中*p 就是 num。
#include
int main()
{
int num = 10;
int *p = #
*p = 20;
printf("%d\n",num);
return 0;
}
这个代码的打印结果就是20,可以简单说明一下指针的作用。
关系:指针变量 - 变量 - 存放地址的变量
#include
int main()
{
int a = 10;
int * p = &a;
printf("%zd\n", sizeof(p));
printf("%zd\n", sizeof(char *));
printf("%zd\n", sizeof(short *));
printf("%zd\n", sizeof(int *));
printf("%zd\n", sizeof(double *)); //打印是如果是%d就会有警告,可以改成%zd
return 0;
}
关于结构体中的 . 和->
在结构体中表达格式:结构体变量 . 成员 结构指针->成员
struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);
今天的分享到这边结束了,制作不易,求个三连。