【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小

这篇具有很好参考价值的文章主要介绍了【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++

君兮_的个人主页

勤时当勉励 岁月不待人

C/C++ 游戏开发


Hello,这里是君兮_,最近刚回家有点懒,从今天开始恢复更新并开始更新新的刷题系列,我们先继续更新0基础入门C语言的内容,今天给大家带来的是指针方面的内容,但由于是初阶,一些高级的用法我们放在进阶篇再讲,今天只讲基础

  • 废话不多说咱们直接开始吧!!

一.指针是什么?

  • 对于初学者来说,最容易弄混的就是指针的含义,导致错误的应用,因此我们今天先来讲讲指针是什么。

指针理解的2个要点:
1. 指针是内存中一个最小单元的编号,也就是地址
2. 平时口语中我们说的指针,通常指的是指针变量,是用来存放内存地址的变量

  • 总结:指针就是地址,口语中说的指针通常指的是指针变量。

内存与指针变量

  • 内存
    【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++
  • 指针变量

我们可以通过&(取地址操作符)取出变量的内存起始地址,把地址可以存放到一个变量中,这个变量就是我们的指针变量

#include <stdio.h>
int main()
{
    int a = 10;//在内存中开辟一块空间
    int* p = &a;//这里我们对变量a,取出它的地址,可以使用&操作符。
    //a变量占用4个字节的空间,这里是将a的4个字节的第一个字节的地址存放在p变量中,p就是一个之指针变量。
    return 0;
}
  • 总结:
  • 指针变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。
  • 那这里的问题是:
  • 一个小的单元到底是多大?(1个字节)
  • 又如何编址?
  • 经过仔细的计算和权衡我们发现一个字节给一个对应的地址是比较合适的。
  • 对于32位的机器,假设有32根地址线,那么假设每根地址线在寻址的时候产生高电平(高电压)和低电平(低电压)就是(1或者0);
    那么32根地址线产生的地址就会是:
    【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++
  • 64位机器同理,有64位地址线,这里仅以32位机器为例。
  • 二进制,由于有32根地址线,所以一共有2的32次方个字节的空间,也就产生了这么多的编号。
    【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++
  • 我们知道(2^32Byte = 2^32/1024KB =2^32/1024/1024MB = 2 ^32/1024/1024/1024GB = 4GB)
  • 此时我们就能给4GB的空间进行编址。
  • 这里我们就明白:
  • 在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。
  • 那如果在64位机器上,如果有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。

总结:
指针变量是用来存放地址的,地址是唯一标示一个内存单元的。
指针的大小在32位平台是4个字节,在64位平台是8个字节


二.指针和指针类型

  • 与变量相同,指针也有不同的类型。
int *p;     //定义一个指针变量P,指向整形变量 
char *p;		// 定义一个指针变量p,指向字符型变量 
float * p; 		// 定义一个指针变量p,指向单精度浮点型变量 
double *p1, *p2;		//定义两个指针变量p1和p2,指向双精度实型变量 
  • 这里可以看到,指针的定义方式是: type + * 。(type指类型名)

指针±整数

  • 我们来看一下代码:
#include <stdio.h>
//演示实例
int main()
{
    int n = 10;
    char* pc = (char*)&n;
    int* pi = &n;
    printf("%p\n", &n);
    printf("%p\n", pc);
    printf("%p\n", pc + 1);
    printf("%p\n", pi);
    printf("%p\n", pi + 1);
    return 0;
}

【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++

  • 这里的%p是打印地址的意思。
  • 1.我们从打印结果可以看出&n与pc的地址是相同的,也就是说两者指向同一处。(这里由于n是int类型,我们需要将它强制类型转换成char类型再使用)
  • 2.由2和3我们可以看出指针加1也就是地址加1即地址指向朝后的一位。
    - 3.从3,4,5我们可以看出,不同类型的指针加1朝后跨越的地址是不同的,与指针变量的类型有关。
  • 总结:指针的类型决定了指针向前或者向后走一步有多大(距离)
  • 但是,这里我们要知道,在相同的操作系统下,指针变量的大小都是相同的!

指针变量的大小

  • 上面我们讲了指针在内存中存放的方式以及存储的空间大小,空间有多大自然就有多大的地址,也就是有多大的指针。
  • 用代码测试一下:
#include <stdio.h>
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
  printf("%d\n", sizeof(char *));
  printf("%d\n", sizeof(short *));
  printf("%d\n", sizeof(int *));
  printf("%d\n", sizeof(double *));
  return 0;
}

【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++

  • 我的电脑是64位平台,因此指针的大小为8个字节

总结:
32位平台下地址是32个bit位(即4个字节)
64位平台下地址是64个bit位(即8个字节)

指针的解引用

#include <stdio.h>
int main()
{
    int n = 0x11223344;
    
    int* pi = &n;
    *pi = 0;
   char* pc = (char*)&n;
   *pc = 0;
    return 0;
}

【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++

  • 以上是pi在内存中的存储,当我们把pi中的值改为0后
    【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++
  • 4个字节中存放的数据全部被改为0
    【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++
  • 以上是pc在内存中的地址,我们可以看到当也把地址中的数据改为0后,却只改了一位字节的地址.
  • 总结:
  • 指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。
  • 比如: char * 的指针解引用就只能访问一个字节,而 int * 的指针的解引用就能访问四个字节。

总结

  • 今天的内容暂时到这里就结束了,我们今天先讲了指针的定义,类型,大小,以及不同类型的指针的不同之处,剩下的部分我们分批次后续进行讲解

  • 好了,如果你有任何疑问欢迎在评论区或者私信我提出,大家下次再见啦!

新人博主创作不易,如果感觉文章内容对你有所帮助的话不妨三连一下这个新人博主再走呗。你们的支持就是我更新的动力!!!

**(可莉请求你们三连支持一下博主!!!点击下方评论点赞收藏帮帮可莉吧)**

【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小,0基础C语言,c语言,开发语言,学习,c++文章来源地址https://www.toymoban.com/news/detail-532143.html

到了这里,关于【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 掌握C语言指针,轻松解锁代码高效性与灵活性(中)

    ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 前面给大家介绍了一些指针的基本概念,今天就让我们继续深入指针的世界,和贝蒂一起打败指针大魔王吧 指针变量也是变量,是变量就有地址,那我们

    2024年03月09日
    浏览(46)
  • 掌握C语言指针,轻松解锁代码高效性与灵活性(下)

    ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 经过前面的刻苦学习,今天我们终于来到了指针的最后一节,这一节将是对前面内容的总结与深化,相信学完之后,大家能对指针有一个更深的理解~ 函数

    2024年03月09日
    浏览(67)
  • 《C语言初阶篇》循环语句还没搞懂?这篇文章带你轻松学会循环语句!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,又是新的一天开始了,今天给大家带来的循环语句的全面讲解!    ⛳️ 历时一天终于给肝出来了,本文详细讲解了wh

    2024年02月15日
    浏览(47)
  • 【C语言初阶】带你轻松玩转所有常用操作符(1) ——算数操作符,移位操作符,位操作符

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,最近要准备期末复习了,可能更新的就不会那么频繁了,下个星期恢复正常更新。 今天给大家带来的是操作符详解,由于这部分的内容比较多,可能会分成几部分讲,今天带来的是第一部分的内容,废

    2024年02月11日
    浏览(45)
  • C语言初阶测评题:测试你的基础知识和编程技能!!

    💓博客主页:江池俊的博客 ⏩收录专栏:C语言刷题专栏 👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路 💻代码仓库:江池俊的代码仓库 🎉欢迎大家点赞👍评论📝收藏⭐ 🎈前言: 欢迎来到这个关于C语言的初阶测评题博客!在这里,我们将为您呈现一系列考察基础知识

    2024年02月11日
    浏览(37)
  • DS作业0-C语言基础知识复习(含指针与链表)

    判断题: 1.直接访问就是直接利用变量的地址直接进行访问。T 2.可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。T 3.int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素。F (是int类型数组,里面有4个指针变量元素) 4.结构体变量可以作数组元素。

    2024年02月04日
    浏览(44)
  • 【05】STM32·HAL库开发-C语言基础知识 | stdint.h介绍 | 位操作 | 宏定义的使用 | 条件编译 | extern声明 | typdef使用 | 结构体、指针、代码规范介绍。

      stdint.h 是从 C99 中引进的一个标准 C 库的文件,可以在MDK5的安装路径:D:MDK5.34ARMARMCCinclude中找到。   stdint.h 定义了很多类型别名,将有符号的char类型定义别名为int8_t等,使用此套别名有易于移植。   在MDK中需要配置才能支持使用S99标准, 默认是勾选的 。   只

    2024年02月08日
    浏览(43)
  • 【C语言初阶(八)】初阶指针详解

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 我们在介绍C语言时已经给大家介绍过指针的概念以及内存地址的概念了,这里我们就不再重复说明前面的内容,对指针毫无了解的

    2024年02月09日
    浏览(47)
  • 【C语言】初阶指针(指针及其类型以及野指针)

    简单不先于复杂,而是在复杂之后。 目录 1. 指针是什么? 2. 指针和指针类型  2.1  指针+-整数 2.2 指针的解引用  3. 野指针  3.1 野指针成因  3.2 如何规避野指针  指针理解的两个要点: 1. 指针是内存中最小单元的编号,也就是地址。 2. 平时口语中说的指针,通常指的是指

    2023年04月16日
    浏览(51)
  • 【C语言】初阶指针

    指针是一种用来存储变量地址的变量类型。它可以指向任何数据类型,包括基本数据类型(如整数、字符等)和复合数据类型(如数组、结构体等)。通过指针,我们可以间接地访问或修改存储在特定内存地址上的数据。 指针是内存中一个最小单元的编号,也就是地址。 平

    2024年02月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包