指针(二)

简介: 指针变量指向的类型:将变量名和离他最近的一个一起拖黑 剩下啥类型 指针变量指向的类型就是啥类型

一;指针变量的类型


int p;

//定义中有效

指针变量自身的类型:将变量名拖黑 剩下啥类型 指针变量自身就是啥类型

指针变量指向的类型:将变量名和离他最近的一个一起拖黑 剩下啥类型 指针变量指向的类型就是啥类型


指向。。。的类型 == 保存。。。类型变量的地址


20200323205659823.png


指针变量的跨度:由指针变量指向的类型大小决定


20200323205840561.png


20200323205914537.png


指针变量+1个跨度


指针变量的取值宽度:指针变量指向的类型决定


void test05()
{int num = 0x01020304;
char *p1;p1 = #
printf("*p1 = %#x\n", *p1);//0x04
short *p2;p2 = #
printf("*p2 = %#x\n", *p2);//0x0304
int *p3;p3 = #
printf("*p3 = %#x\n", *p3);//0x01020304
}


运行结果:


20200323210115852.png


二:指针变量的初始化


20200323210541951.png


*三:&取地址符 和 指针解引用符号的区别


void test08()
{
int num = 10;
//使用中
//num为int
//&num 为 int *
//对表达式取& 加一个*
int *p = #// *p == num
//p 的类型为 int *
//*p 的类型为 int
//对指针变量取* 表达式减一个*
//& 与 *相遇 从右往左 一次抵消
printf("%d\n", *&num);//*&num==num
//*p == num ?
//*p = *&num == num;
//*&*&*&*&*&*&p == p}


四:指针的注意事项


void test01()
{
//1、void 不能用于定义变量
//void num;//err
//2、void *可以定义变量
//p的类型为void *在32位平台 4B,所以可以定义变量p
void *p;//万能指针-->可以保存任意类型的地址
int num = 10;
p = #
//float f = 3.14f;
//p = &f;
//不能通过 万能指针 范围所存储的空间对应的内容
// printf("*p = %d\n", *p);//err 不能使用*p
//必须对 万能指针 强制类型转换 才能取对应空间的内容
printf("*p = %d\n", *(int *)p);
//3、不要操作未初始化的指针变量
//p1保存的是一个随机地址 容易访问非法内容 造成段错误
int *p1;
//printf("*p1 = %d\n", *p1);//段错误
//4、不要操作 初始化 为NULL的指针变量
int *p2 = NULL;//printf("*p2 = %d\n", *p2);//段错误
//5、不要给指针变量赋 无意义的数值
int *p3 = 2000;
//printf("*p3 = %d\n", *p3);//段错误
//6、不要操作越界的空间
int data = 100;
int *p4 = &data;
p4 = p4+1;
//printf("*p4 = %d\n", *p4);//非法操作}


五:数组元素的指针


案例:数组元素的指针变量 遍历数组元素内容


2020032321212978.png


运行结果:


20200323212156188.png


案例:数组元素的指针变量给数组元素获取键盘输入


20200323212937663.png

相关文章
|
1月前
指针初步讲解(上)
指针初步讲解(上)
32 1
|
6月前
|
编译器
深入理解指针(2)
深入理解指针(2)
41 2
|
2月前
|
存储 C语言
C 指针详解
C 语言中的指针是一个强大而重要的概念,用于间接访问变量的存储地址。指针是一个变量,存储其他变量的地址,类型与其指向的数据类型相关。基本操作包括取地址 (`&`) 和解引用 (`*`)。指针使用前需初始化,可指向有效地址或为空 (`NULL`)。指针支持算术运算,可用于数组和函数。通过 `malloc` 和 `free` 可管理动态内存。多级指针允许存储指针的地址。使用指针时需注意初始化、防止内存泄漏及避免访问无效地址。掌握指针是精通 C 语言的关键。
47 13
|
6月前
|
存储 算法 C++
C++指针
C++指针
43 0
|
5月前
|
存储 编译器 C++
C++中的指针
C++中的指针
34 1
|
6月前
|
C++ 编译器
|
6月前
指针(3)
指针(3)
29 0
|
6月前
|
存储 人工智能 大数据
C++017-C++指针及其应用
C++017-C++指针及其应用
|
存储 编译器 C语言
|
存储 人工智能 C语言