【C语言】指针基础篇(1) |
您所在的位置:网站首页 › c语言怎么查看字节 › 【C语言】指针基础篇(1) |
前言
对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; }输出结果 指针就是内存 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; }输出结果 在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 |