第8章:指针-指针变量的定义、初始化及解引用(基于哈工MOOC)
来源:互联网 发布:sql server没有002 编辑:程序博客网 时间:2024/05/21 11:30
第8章 指针 ——指针变量的定义、初始化及解引用
指针前补充的知识:
*1,内存如何编址
内存中的每个字节都有唯一的编号(地址)
内存地址按字节编号,其字长一般与主机相同 32位机使用32位地址,最多支持2的32次方字节内存(4G)
*2,什么是地址
地址是一个无符号整数,从0开始, 依次递增。在表达和交流时,通 常把地址写成十六进制数
变量的寻址方式
#1,直接到变量名标识的存储单元读取变量的值——直接寻址
#2,通过其他变量间接找到变量的地址读取变量的值——间接寻址
用什么类型的变量来存放变量的地址?
指针(Pointer)类型
指针变量——具有指针类型的变量
*保存32位地址值——sizeof(pa)是4个字节
*用什么数据类型去理解它所指向的存储单元中的数据呢?
int *pa;int *pa = &a;int a = 1;pa = &a;
指针变量指向的数据类型,称为基类型
指针变量的内容:&a
使用%p格式符显示变量的地址
#include <stdio.h>int main(){ int a = 0; int *pa; printf("a=%d\n", a); printf("&a=%p\n", &a); printf("pa=%p\n", pa);} return 0;
输出:
指针变量只能指向同一基类型的变量
**也就是说指向相同的数据类型
指针变量使用之前必须初始化
**若你不知把它指向哪里,那就指向NULL(在stdio.h中定义为0)
补充:
1,NULL是什么?
空指针——值为NULL的指针,即无效指针
问题:
问题:p = 0 和 p = NULL 有什么区别吗?
p = NULL可以明确地说明p是指针变量,而不是一个数值型变量
问题:空指针就是指向地址为0的存储单元的指针吗?
答案:不一定
* 并非所有编译器都使用0地址
某些编译器为空指针使用不存在的内存地址*
2,如何访问指针变量指向的存储单元中的数据?
通过间接寻址运算符访问(引用)指针变量指向的变量的值
——指针的解引用(Pointer Dereference)
#include<stdio.h>int main(){ int a =0; int *pa = &a; *pa = 1; printf("a= %d\n",a); printf("*pa= %d\n",*pa); return 0; }
3,指针变量的定义和初始化
#include <stdio.h>int main(){int a = 0, b = 1;int *pa, *pb;pa = &a;pb = &b;printf("a=%d, b=%d\n", a, b);printf("*pa=%d, *pb=%d\n", *pa, *pb);return 0;}
注意:不能写成:int* pa, pb;
- 第8章:指针-指针变量的定义、初始化及解引用(基于哈工MOOC)
- 指针定义及初始化
- 指针变量的定义和引用(最简单的)
- MOOC清华《面向对象程序设计》第8章:智能指针与引用计数实验
- 指针变量的引用
- 指针变量的引用
- 指针变量的引用
- 指针变量的定义
- 指针变量的定义和初始化[c][code]
- 内置变量,复合变量与内存引用的关系(左值)及指针的几个解引用方法
- 指针知识(一) 直接引用、指针定义、初始化、运算符
- 指针的初始化与引用
- c 指针定义和引用 变量类型
- 指针的定义和初始化
- “指针数组”和“数组指针”的区别、函数指针定义及引用
- 记录 怎么引用指针变量?(指针变量引用变量)
- 变量、指针(引用)的关系
- 如何定义指针的引用
- HDOJ 2133 What day is it
- 8. 面向对象 -- 继承
- hdoj-2203亲和串(Kmp)
- 设计模式之建造者模式
- WebStorm开发React项目,修代码之后不更新
- 第8章:指针-指针变量的定义、初始化及解引用(基于哈工MOOC)
- Task Scheduler
- POJ 1088 滑雪
- 网络基础常考面试题--源自牛客网
- Git知识梳理和整合
- BeanUtils将map直接封装到对象中
- h5 canvas画布、setInterval定时器、addEventListener事件
- STL之容器小结
- spring boot日志打印(六)