【C语言】指针基础篇(1)

您所在的位置:网站首页 c语言怎么查看字节 【C语言】指针基础篇(1)

【C语言】指针基础篇(1)

2023-06-22 08:50| 来源: 网络整理| 查看: 265

前言

对C语言指针基础的回顾 本文对指针、野指针、指针类型的内容进行介绍 在指针基础篇(2)中进行对指针运算、指针和数组、二级指针、指针数组进行介绍 如果有帮助,还请各位小伙伴多多点赞关注收藏,后期会持续进行更新!!!

文章目录 前言一、什么是指针1.指针变量2.指针的大小 二、指针类型1.指针变量类型2.指针类型的意义指针类型间的差别指针的解引用 三、野指针1.什么是野指针2.野指针成因3.如何避免野指针 四、总结

一、什么是指针

简单来说,指针就是地址是内存中一个最小单元的编号 用来存放内存地址的变量通常被称为指针,即为指针变量

1.指针变量

用来存放地址的变量,叫做指针变量,在这个变量中存放的是地址

下面用代码举个例子

#define _CRT_SECURE_NO_WARNINGS 1 #include int main() { int a = 10; int* pa = &a; printf("%p", pa); return 0; }

输出结果 在这里插入图片描述 这里的pa指针变量是用来存放a的地址

指针就是内存

2.指针的大小

在内存中指针的大小在不同的机器中是不同的

在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。 在64位机器上,有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。

指针的大小在 32 位平台是 4 个字节,在 64 位平台是 8 个字节

二、指针类型 1.指针变量类型

变量有不同的类型,指针变量也有 指针类型可以分为以下几类:

char *pc = NULL; int *pi = NULL; short *ps = NULL; long *pl = NULL; float *pf = NULL; double *pd = NULL;

同理得 char* 类型的指针是为了存放 char 类型变量的地址。 short* 类型的指针是为了存放 short 类型变量的地址。 int* 类型的指针是为了存放 int 类型变量的地址。

2.指针类型的意义

为什么会有这么多类型? 不同类型指针的大小有没有区别?

指针类型间的差别

用代码举个例子

#include int main() { int a = 10; char* pc = (char*)&a; int* pi = &a; printf("%p\n", &a); printf("%p\n", pc); printf("%p\n", pc + 1); printf("%p\n", pi); printf("%p\n", pi + 1); return 0; }

输出结果 在这里插入图片描述 指针的类型决定了指针向前或者向后走一步有多大(距离)

指针的解引用

演示代码

#include int main() { int n = 0x11223344; char* pc = (char*)&n; int* pi = &n; *pc = 0; *pi = 0; return 0; }

输出结果 在这里插入图片描述 指针的类型决定指针解引用的时候能操作几个字节 如 char* 的指针解引用就只能访问一个字节, int* 的指针的解引用就能访问四个字节。

三、野指针 1.什么是野指针

在C语言中,野指针是指指向未知或无效内存地址的指针。当指针指向的内存地址没有被初始化或者已被释放时,这个指针就是野指针。野指针可能会导致程序崩溃、出现不可预期的结果或者安全漏洞。因此,在使用指针时需要避免野指针的出现。

2.野指针成因

野指针成因分为以下三类: 1.指针在使用前未初始化

#include int main() { int *p;//指针变量未初始化,默认为随机值 *p = 10; return 0; }

2.指针越界访问

#include int main() { int arr[10] = {0}; int *p = arr; int i = 0; for(i=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3