指针到底是什么?
通过学习,我的理解是:在写源程序时,所有申请的变量,是储存在内存那块呢?那么就引出了指针这个概念,因此指针是找寻变量储存的地址。
不难理解,指针是变量的地址,那么根据这个地址就能精确的找到该变量。(至于为什么叫指针,应该是统一定义的标准吧)
指针类型:(int *、char *、double *)
变量有类型,那么变量的地址也有相应的类型,决定指针在解应用操作时,能够访问空间的大小。
int *p :能够访问4个字节
char *p :能够访问1个字节
double *p :能够访问8个字节
(1).int* p = 0x11223344; ————》初始定义变量
int *pa = &a; ——————》对a取地址,将a的地址赋值给pa,返回类型为int*型的指针
*pa = 0; ---------------》对指针解应用操作,并将0赋值给这个地址。因此指针内的值变成了0
在内存调试的时候,这里储存的顺序有正序和倒叙。设计大小端问题。后面会重点对这个的了解叙述
那么问题来了:二级指针是什么?
一环套一环,二级指针就是一级指针的地址。
指针类型:
通过代码:指针是什么类型决定了指针向前或者向后走一步的距离
int ------》跳过了4个字节,一个整形
char --------》跳过了1给字节,一个字符型
int* ---------》跳过了4给字节,一个指针型
结构体是什么?
通过理解:是一种变量集合的类型。由将多个变量所组成的大集合。而这些类型就是结构体的成员。
对于结构体,最容易忽略的错误,我当时咋都没有发现:( “初始化”: 无法从“const char [3]”转换为“int”)这个错误.
仔细检测一下,会发现字符型和整形及浮点型在初始化的时候是不同的,因为c语言中没有字符串类型,通常用char型定义,所以初始化的时候要带双引号。
而整形和浮点型是数字,不需要带双引号。这个错误把我憋了好一会。
正确代码: