指针是用来访问内存的。内存就相当于一个大酒店,内存单元就像一个个小房间,同时每个房间都有编号(地址),C语言中,把这个地址叫做指针。
一个指针多大合适?1字节一个内存单元。
如何看占了多少单元
例如
int main() { int a = 15; /*因为是int类型所以向内存申请四个字节的空间,用来存放这15个数的值。*/ /*用f10 &a看*/ return 0; }
此时按F10,再在看到调试进行一下操作
此时出现一下画面,名称那里输入&a,值都会不一样,因为位置每次都变但是都是0x(十六进制)开头。
还可以在内存中查看
此时出现一下画面
15 是十进制的 转化成 十六进制 0x 00 00 00 0f 存进内存倒着看就出来了,1Byte = 8 bit,所以4字节等于32个bit。
指针怎么用呢?
1.简单的运用。
可以理解为
高启强想要吃鱼,
告诉了老莫,
老莫知道之后就帮高启强去干掉他了。
指针变量是用来存放地址的。
2.放在结构体里一起运用
#include<stdio.h> struct Stu \\建立结构体 { char name[50]; int age; float scores; }; void print1(struct Stu t) \\函数调用 { printf("%s %d %f\n", t.name, t.name, t.scores); } int main() { struct Stu s = { "zhangsan",18 ,88.8f }; print1(s); return 0; }
此时换成用指针来写
void print2(struct Stu* pb) { printf("%s %d %f\n", (*pb).name, (*pb).age, (*pb).scores); /*字符串用%s*/ printf("%s %d %f\n", pb->name, pb->age, pb->scores); /*直接用“pb->”就行了不用加**/ } int main() { struct Stu s = { "zhangsan",18 ,88.8f }; //print1(s); print2(&s); return 0; }
这就是指针在结构体里边的简单运用。