C语言的指针是让新手很头疼的事情,但是由于其太过于灵活,以至于可以很好得的解决一些复杂的问题,因此不得不掌握。我最近正在学习指针相关的内容,因此在这里做一个小的总结。本篇是不涉及到函数以及结构体等复杂的使用方法,仅仅讨论一下指针的基本使用方法。

首先我们区分 *  和  &  ,这两个运算符,  & 我们在scanf函数中经常使用。为了方便理解我们看下面这行代码:

int *p =a;

定义了一个指向a的整型指针,那么有p=&a ;                  *p =a;

即指针变量的值是地址(&a),*可以理解为取地址 (*p 可以看成 *(&a)取出&a这个地址中的值)。

下面我们看一个复杂点的代码:

int n =0,*p = &n,**q = &p;

这里出现了二级指针,也就是所谓的“指向指针的指针”。 q是指向 int* 型数据的指针变量,首先  p  = &n,这行代码很好理解,后面的**q = &p可以拆开来看,首先声明了一个 int* 型数据的指针变量  int **q;再给指针型变量赋值 即(*q) = &p;那么问题来了,对于指针的赋值应该如何理解呢?就以上面这行定义为例有下面四个赋值语句

p = 1; *q = 2;q = p;*p = 5;

我们先看 p = 1;这个赋值语句,根据我们上面所解释的p =&a;我们知道指针变量的值应该是地址,而p = 1;直接将整数赋给了指针变量,编译时会报错

cannot convert from 'const int' to 'int *'

我们再看 *q = 2;根据上面的分析我们知道(*q) = &p;同第一句一样的问题编译时会报错 cannot convert from 'const int' to 'int *'

再来看第三句 q = p; 这句很明显的错了,p是 int* 型数据 而 q是int**型数据,编译时会报错cannot convert from 'int ** ' to 'int *'

我们根据上述 p=&a ;                  *p =a;可以明显的看到  *p = 5;这是一个正确的赋值语句。

C语言指针详解----指针声明定义赋值相关推荐

  1. C++指针详解(指针初始化与回收,常量与指针,引用与指针)

    C++指针详解 1.指针的定义初始化以及回收 2.常量与指针 1)常量指针(常指针) 2)指针常量 3)总结 3.引用与指针 1.指针的定义初始化以及回收 指针是一个地址,这个地址内存放数据,这些数据 ...

  2. 【初阶】C语言指针详解——指针必备的7大知识点

    文章目录 前言 一.指针是什么

  3. 筑基九层 —— 指针详解

    目录 前言: 指针详解 前言: 1.CSDN由于我的排版不怎么好看,我的有道云笔记比较美观,请移步有道云笔记 2.修炼必备 1)入门必备:VS2019社区版,下载地址:Visual Studio 较旧 ...

  4. C++Study 指针详解

    C++指针详解 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区, ...

  5. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  6. C语言指针详解——入门C语言指针,初级指针使用。

    原文地址:我的个人博客点击查看 C语言教程第二弹--指针详解 所有学过C语言的人都知道,C语言难在它的指针的使用和理解,今天,我带给大家C语言的指针的教程,供大家学习交流,如果有讲的不对的地方,请给作 ...

  7. c语言的指针详解ppt,最全的C语言指针详解.ppt

    最全的C语言指针详解.ppt 第6章 指针,6.1 指针定义与使用 6.2 指针与函数 6.3 指针与数组 6.4 指针与字符串 6.5 指针数组与多级指针 6.6 指针与动态内存分配 6.7 指针的 ...

  8. C语言指针详解(全解)—— 前篇

    关于指针的基本概念及相关运算写在了上一篇博客 C语言指针详解(初级)_Seinrich的博客-CSDN博客 本篇博客来详细的解说一下指针,深入探讨指针 一.指针与const const修饰的变量为常变 ...

  9. 带你刷笔试关的小怪|详解指针习题和面试题【C语言/指针/进阶】

    文章目录 前言 9. 指针和数组笔试题解析 复习回顾 一维数组 字符数组 二维数组 10. 指针笔试题 笔试题1: 笔试题2 笔试题3 笔试题4 笔试题5 笔试题6 笔试题7 (#)笔试题8 结语 前 ...

最新文章

  1. 组合模式用于分类设计子叶与枝干时候太好用了
  2. Android 内容提供器---内容提供器基础(内容的统一资源标识(URIs))
  3. macrotask和microtask以及EventLoop的介绍
  4. 开篇:讲讲peopleeditor遇到的问题
  5. winform教_电脑绝技教你22天学精Csharp之第十五天winform应用程序补充5
  6. 超强一代JupyterLab发布,可视化调试、中文显示、简单交互界面
  7. excel公式不自动计算_WPS表格仅显示公式不计算结果怎么办
  8. axis1 c# 接口 调用_java调用c#的Webservice接口数据报错
  9. 简述python的优点_Python是什么及Python的优点和缺点
  10. linux软件装在哪了,linux软件的安装目录在哪
  11. 威纶触摸屏宏指令编程,字符串相关函数介绍与使用...
  12. 电梯plc的io分配_用PLC构成液体混合控制系统IO分配及梯形图编程
  13. 大道至简:数据库的终极未来
  14. 京东iOS客户端组件管理实践
  15. 大数据最火的Spark你确定不来了解一下吗?(1)
  16. 多目标蚁群算法路径规划(四)------多目标约束过程常规流程框架
  17. ANDROID物联网开发从入门到实战附源码
  18. 一人之下鸿蒙怎么得,一人之下:老农功是什么?不是炁体源流,不是神明灵,是一个人!...
  19. 企业信息安全应对勒索软件的攻击难度提升
  20. 求斐波那契数列的第n项 java

热门文章

  1. JDBC Statement PrepareStatement
  2. JS 数字左补零函数
  3. idea maven 创建webapp项目没有src目录
  4. asp中chr()函数及转义符对照表
  5. [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)
  6. iOS之深入解析内存管理Tagged Pointer的底层原理
  7. Git之多个用户ID适配
  8. RxSwift之UI控件UICollectionView扩展的使用
  9. 数据库开发——MySQL——多表查询
  10. ALGO-1 区间k大数查询