一、指针到底是个什么牛马?
1.说指针之前先来了解下——内存
由于我们的电脑有32位/64位两种,拿32位来举例子
32位——32根地址线(也就是电线,给他们通电,产生0/1)
于是乎就会产生
这种32个一串的地址一共有2^32 个也就是2^32 个bit,而1个字节=8bit,所以就会有(2^32)/8个内存单元
2.内存用来干什么
当然是用来存东西,举个栗子
然后呢,假设这4个字节的内存空间编号为501 502 503 504
问题来了,那a到底是哪个格子呢?让代码运行起来用监视器查看一下
监视器一查看就会发现&a取到的其实是第一个字节的地址,同时还发现,取地址是从低地址往高地址取的(从第一位往后,因为只要找到了第一位,后面的就依次+1即可),也就是如图
3.指针
接着上边,将a的地址给它打印出来,这里注意一个问题,因为每次的内存都是重新分配的,所以每一次打印出来的地址是不一样的
指针的定义
为什么要这样定义
举个栗子
地址和变量的关系请看图
存放10的地址就是指针,地址就好比你家门牌号 即————地址=指针
二、指针怎么使用
* ——解引用操作符
要想使用指针,就要用到解引用操作符,也就是 “ * ”号
三、指针的大小
打印出各种类型的指针的长度
运行结果为
为什么全都是4,那是因为在32位的机器上,一个内存单元的大小为1byte=8bit,而4个字节(byte)=32个bit,上栗子``
四、结构体
一个复杂对象,栗如:
学生:
名子+年龄+性别+身高
—————————————————————————————————————
当遇到这种对象时,基本类型已经无法表示,这时候就需要用到结构体
语法格式就是这个样子,依葫芦画瓢,用就完了
结构体变量如果要访问成员变量,就要用 “.”操作符
printf("名字:%s 年龄:%d 性别:%s 学号:%s", s1.name, s1.age, s1.sex, s1.id);//即可访问并打印各个成员变量
同样,可以用指针来访问变量成员两种方法都是可以的,都一样
“.”————————结构体变量.成员名
“->”————————结构指针->成员名
总结
本篇只对指针和结构体做简单介绍,方便理解为主,欢迎指出错误
//创作不易,如果觉得可以,三连走起来~看到会回访//