最近在学C语言 折腾了几天 今天终于看到了指针这一章 也是几经折腾 稍微看懂了点
对变量的访问
一种是直接访问 通过变量名或地址直接访问变量
一种是间接访问 通过指针指向变量 获得变量地址 然后根据地址再去访问内存中存储的内容
注:NULL表示空指针 值为0
变量
变量:用来标识一块内存区域,这个区域存储的值是可以改变的
变量名:它不占用空间 他只是那个内存区域地址的一个标识 一个别名 就像每一个人都有一个名字 方便查找等 另外这个变量名是给程序员们来操作的 机器中是不会出现它的
地址:地址就是地址 声明变量所占的那个内存区域的地址位置
指针变量
用来存放一个变量的内存地址 他只能保存一个合法的地址
合法的地址包括:auto变量的地址;静态变量的地址;调用内存分配函数(如malloc)返回的地址
指针变量必须要先有指向 然后才能赋值 可以使用 &
符号获取变量的地址
指针变量的定义
类型说明符 *变量名1int *num;
指针变量的初始化和赋值
|
|
示例
|
|
这个是我一开始写的 会报错 因为 *num=233;
这里的 num 只是声明了一下他是指针变量 他并没有任何的指向 这种情况下直接给他去赋值 是不能赋值的 这种指针叫 悬浮指针
。所以指针需要先有指向就是说到底是哪块内存。
|
|
首先声明了一个int类型变量 a 初始化赋值100,声明了一个int变量 b,然后又声明一个指针变量 num.
①num=&a;
表示先把指针变量 num 指向了变量 a 的地址
②*num=233;
表示给指针变量赋值 233 也就是指针变量所指向地址的值赋值了 233 以为变量 a也是指向这个地址 所以此时 a的值也已经变为了233
③最后把 num 所指向的值 233 赋值给了 b 所以此时b的值是 233
先简单写到这里
关于字符串类型和指针还有点迷惑待整理~