C语言基础——指针

这篇具有很好参考价值的文章主要介绍了C语言基础——指针。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、指针

指针就是地址。

1.指针的意义

地址:数据的位置。
指针是C语言提供的一种类型。

2.指针类型表示

类型 *
类型:char int float double 指针 结构体 数组
//char * – 代表这个地址里面存放的是char型数据 — 该指针指向一个char型空间
//int * – 代表这个地址里面存放的是int型数据
问题:
C语言基础——指针
通过强制类型转换:(int *)0x40000000 – C语言代表1个可以存放整型数据的地址
C语言基础——指针
*地址 – 代表该地址中的内容。
int num = 10;
打印num变量的地址:%p,&num
32位CPU和系统:地址 – 0x0000 0000 ~ 0xffff ffff – 32位
64位CPU和系统:地址 – 64位

3.一些操作

3.1打印1个变量地址

&变量名 – 普通变量。
数组名 – 数组。

3.2通过地址查看改地址的内容以及修改改地址的内容

C语言基础——指针
操作空间如下图
C语言基础——指针

3.3操作某个空间 – 4个字节,给他赋值为100,只知道该空间的地址0x8000 0000

*((int *)0x8000 0000) = 100;
//但是操作系统显示段错误,不允许普通用户直接修改地址的空间,基层嵌入式可以

4.指针变量的定义

类型 *标识符; – 没有赋初值,称为野指针变量。
类型 *标识符 = NULL; (习惯)
类型 *标识符 = &变量名;(习惯)

int num = 100;
定义1个指针变量指向该num空间?
int *pnum = #
pnum 代表的是本身变量的空间
*pnum 代表的是指向的空间
C语言基础——指针

5.指针类型的大小

指针类型的大小–32位/64位
C语言基础——指针
C语言基础——指针

6.指针变量的使用

6.1 指针变量的初始化

例如:int num = 0; char ch = 0; char str[1024]=”\0”;
int *pnum = NULL;//NULL – 空 = 0
指针变量在不使用的情况下,一般初始化为NULL,否则我们称该指针为野指针。

6.2一个指针变量对应多个普通变量

//int num1=100,num2=500;
//int pnum = NULL;
//pnum指向num1 – C语言如何编写? pnum = &num1; – 可以通过
pnum 操作num1的空间。
//pnum指向num2 – C语言如何编写? pnum = &num2; – 可以通过*pnum操作num2的空间。
C语言基础——指针

6.3想通过指针对某个变量空间操作:

1.定义一个指针变量 int pnum = NULL;
2.把某个变量的地址赋值给指针变量 pnum = #
3.通过
指针变量名,就可以操作某个变量空间 *pnum = 1000;

6.4一个变量,多个指针指向该变量

C语言基础——指针

6.5指针类型的强转

和普通变量一样。(指针类型) 某个变量地址。
unsigned int num = 0x12345678;
C语言基础——指针
C语言基础——指针
C语言基础——指针

7.指针的其他应用

7.1 指针变量+1,物理地址变化

指针变量+1,物理地址+类型大小。

7.2指针与一维数组

7.2.1数组名代表该数组的首地址

打印数组的首地址
在这里插入图片描述
C语言基础——指针

7.2.2num和&num[0] – 指针类型

一样:num – 整型*
num[0] – 整型*

7.2.3 *num – 代表

– 数组中第0个元素的空间 num[0]

7.2.4 (p+1)和p+1的区别
          *(p+1) 代表:地址+1 -- num[1] 

C语言基础——指针
p+1 = num[0]+1 = 11 – -因为优先级 > + 先执行*p,再执行+1

例1:
打印:int num[5]={10,8,6,4,2};num的内容,通过地址打印
C语言基础——指针
例2:
打印:int num[5]={10,8,6,4,2};num的内容,通过指针变量打印
C语言基础——指针

7.2.5 *p++和++*p的区别:

原因:++和的优先级相同,从右到左执行。
先执行++,再执行
p,地址+1(下面例子)
C语言基础——指针
先执行*p,再++,内容+1
C语言基础——指针

7.2.6扩展:数组名代表该数组的首地址,不能够进行变量++。

7.3数组名和指针名:指针名可以替换数组名

C语言基础——指针
C语言基础——指针

7.4指针与二维数组

指针变量与二维数组的元素之间的关系:
C语言基础——指针

7.4.1二维数组的首地址表示

C语言基础——指针
C语言基础——指针

7.4.2上述3种首地址表示方式他们的指针类型分别是:

&num[0][0] – int * – 整型指针类型 – 第0行0列元素的地址 = int *
num – int (*)[4] – 整型数组指针类型
num[0] – int * – 整型指针类型 – 第0行的首地址 = int *
C语言基础——指针

7.4.3获取第一行首地址

获取第1行的首地址:
&num[1][0]
也可以:num[1]
C语言基础——指针
结果:num[0] num[1] num[2] – 代表了3个一维数组

C语言基础——指针
C语言基础——指针

7.4.4二维数组的数组名 – 数组指针类型

C语言基础——指针
C语言基础——指针

7.5扩展

数组指针 – 代表是指针 – 用于二维数组中。
指针数组 – 代表是数组 – 指针类型的数组
C语言基础——指针

7.6指针的指针–二级指针

获取一个指针变量的地址?
&变量名;
定义1个指针变量,保存另外一个指针变量的地址。 — 二级指针

p – 本身变量空间
*p – 指向的空间
*(地址) – 对该地址进行寻址文章来源地址https://www.toymoban.com/news/detail-416220.html

到了这里,关于C语言基础——指针的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C语言基础之——指针(上)

    前言:小伙伴们又见面啦!本期内容,博主将展开讲解有关C语言中指针的上半部分基础知识,一起学习起来叭!!! 目录 一.什么是指针 二.指针类型 1.指针的解引用 2.指针+-整数 三.野指针 1.野指针成因 (1)指针未初始化  (2)指针越界访问 2.如何规避野指针 四.总结 指针

    2024年02月11日
    浏览(38)
  • C语言基础之——指针(下)

    前言:本篇文章将继续讲解有关指针的剩余基础知识。 学无止境,一起加油叭!! 目录 一.指针运算 1.指针 +- 整数  2.指针的关系运算  3.指针 - 指针 二.指针与数组 三.二级指针 四.指针数组 总结 指针运算包括以下三种: 指针 +- 整数 指针 - 指针 指针的关系运算 我们尝试用

    2024年02月11日
    浏览(26)
  • 【C语言基础入门】二级指针、一维数组与指针、二维数组与指针

    在学习C语言的过程中,理解指针的概念是非常重要的。指针提供了一种直接访问内存地址的方式,使得我们可以更加灵活地管理数据和内存。在本文中,我们将介绍C语言中的二级指针、一维数组与指针,并通过通俗易懂的语言和示例代码来帮助读者理解这些概念。 二级指针

    2024年02月05日
    浏览(44)
  • 【C语言基础】:深入理解指针(三)

    指针系列回顾 : 【C语言基础】:深入理解指针(一) 【C语言基础】:深入理解指针(二) 一、冒泡排序 冒泡排序的核心思想就是:两两相邻的元素进行比较。 可以看到,这段代码对arr数组进行了排序,但这个代码还有一些缺陷,那就是无论数组内部的元素是否有序,他都会循

    2024年03月10日
    浏览(32)
  • C语言-基础语法学习-3 二级指针

    当涉及到多级指针时,C语言的灵活性和强大的指针功能可以得到充分的发挥。二级指针是指指向指针的指针,也被称为指向指针的引用。 使用二级指针可以实现以下功能: 动态内存分配:通过二级指针可以动态地分配内存块,并将其地址传递给其他函数或模块进行操作。这

    2024年02月12日
    浏览(35)
  • C语言 指针声明和定义 - C语言零基础入门教程

    目录 [一.指针简介] [1.内存] [2.内存地址] [3.指针声明] [二.指针类型] [三.声明并初始化一个指针] [1.声明指针并直接初始化 – 推荐] [2.先声明指针在初始化 – 不推荐] [四.查看指针地址和指针的值] [五.NULL 指针 – 空指针] [六.重点总结] [七.猜你喜欢] 零基础 C/C++ 学习路线推荐

    2024年03月22日
    浏览(32)
  • 逍遥自在学C语言 | 指针的基础用法

    在C语言中,指针是一项重要的概念,它允许我们直接访问和操作内存地址。 可以说,指针是C语言一大优势。用得好,你写程序如同赵子龙百万军中取上将首级;用得不好,则各种问题层出不穷,有种双拳难敌四手的感觉。 本文将介绍指针的基础知识,包括指针的定义、初始

    2024年02月09日
    浏览(32)
  • 【C语言初阶】带你轻松掌握指针基础知识完结篇——野指针,指针运算,指针和数组,二级指针

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,今天继续给大家更新0基础入门C语言的内容,我们这次主要更新的依然是初阶指针的基础知识 废话不多说咱们直接开始吧!! 概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有

    2024年02月16日
    浏览(35)
  • 【C语言】指针超级无敌金刚霹雳进阶(但不难,还是基础)

    点击这里访问我的博客主页~~ 对指针概念还不太清楚的点击这里访问上一篇指针初阶2.0 上上篇指针初阶1.0 谢谢各位大佬的支持咯 今天我们一起来学习指针进阶内容 指针变量有 字符指针变量 , 数组指针变量 和 函数指针变量 char* 叫做字符指针 一般这么来使用: 通过指针存

    2024年03月09日
    浏览(29)
  • 【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,最近刚回家有点懒,从今天开始恢复更新并开始更新新的刷题系列,我们先继续更新0基础入门C语言的内容,今天给大家带来的是指针方面的内容,但由于是初阶,一些高级的用法我们放在进阶篇再讲

    2024年02月12日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包