C语言指针往往是C语言学习过程中最困难的地方, 最近重新理解了一下C语言的指针知识, 在此整理一下, 如果有错误请留言指正.

对于刚入门的人来说, 指针涉及方方面面, 从简单的数组到结构体, 都会用到指针.

指针根据应用不同的地方, 功能也是不同的, 在此尽量以最简单的方式进行叙述.


一. 指针基础知识

指针应用主要分为两个方面, 一是定义阶段. 另一个是使用阶段.

1. 定义阶段

int *p;

这里表示定义了一个int型指针, 即*p指向内存中一块地址, 占用4个字节(后面会进行解释4字节, 但是简单一提是int类型占用4字节, double占用8字节).

int a=1;int *p=&a;

此处与上面不同的地方是在定义指针的同时, 将其指向的地址赋初值为1, 即将*p指向的地址存入int类型的数且该数为1.

2. 使用阶段

*p=;

前面已经定义了int型的指针, 且指针指向的地址赋初值为1. 这里想把*p指向的地址中的值赋为2, 则使用*p=2.

这里比较混乱的地方是下面这种情况:

*p    //表示操作*p中的数值, 即*p为一个数值
p      //表示地址, 及地址号

这里一定要区分明白*p

二. &的说明

在指针的使用过程中还要注意的一个符号就是&, 这个&符号表示寻找地址. 使用方法如下:

;
int *p=&a;       //这里&表示寻找到a的地址, 并将其赋给指针p
printf("%d\n",*p);  //输出2

这一段代码可以这么理解, 定义一个int型指针, 改指针指向了a变量的地址, 所以最后printf的过程最后寻找到变量a的地址然后输出.

三. 指针在数组中使用

这里再给出数组中指针的简单实用, 代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    ]={,};  //定义数组a(0)=111, a(1)=999. 目的是便于区分输出值
    int *p;         //定义int指针p
    p=a;           //将数组a的首地址给指针p
    printf("%d\n",*p);    //输出111
    printf());//输出999, 因为此时指针p指向a(1)的地址
    ;
}

下面代码涉及指针的移动问题:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    ;
    int *p;
    p=&a;
    printf("%#X\n",p);    //十六进制输出p的地址, 我的机器输出OX28FF14
    printf());  //输出OX28FF18
    double b=99.9;
    double *q=&b;
    printf("%#X\n",q);    //输出OX28FF08
    printf());  //输出OX28FF10
    ;
}

这里int与double地址输出的值不同, 原因是int和double占用的字节数不同. int占用4字节, double占用8字节, 所以当int型指针+1移动时实际移动4个字节的地址, 而double则移动8个字节的地址. 可以类比到float与char类型.

字符串在此不解释, 可以当做特殊数组进行处理.

四. 错误示例解析

下面给出一些错误示例

;  //出错原因指针未指向明确的地址就赋值//此段代码等价int *p;p=1;     //前面说过p为地址, 这里给地址赋值为1.
int *p;    //原因同上
*p=;

转载请注明出处, O(∩_∩)O谢谢!

C语言指针入门知识的更多相关文章

  1. C语言指针基本知识

    对程序进行编译的时候,系统会把变量分配在内存单位中,根据不同的变量类型,分配不同的字节大小.比如int整型变量分配4个字节,char字符型变量分配1个字节等等.被分配在内存的变量,可以通过地址去找到, ...

  2. C语言指针入门

    指针指包含地址 声明指针: int num:声明整数 int *num:声明指针,下面的声明也是等价的,空格的使用指示个人爱好 int* num; int  *  num; int  *num; in ...

  3. C语言指针和数组知识总结(上)

    C语言指针和数组知识总结(上) 一.指针的基础 1.C语言中,变量的值能够通过指针来改变,打印指针的语句符号可以是:  %08x 2.指针的本质 指针的本质就是变量,那么既然是变量,那么一定会分配地址 ...

  4. 用几分钟了解R语言入门知识

    第一篇——用几分钟了解R语言入门知识 第二篇——用几分钟了解R语言入门知识(续) 关于数据分析学习笔记的计划(以及目录)

  5. C语言入门---第九章 C语言指针

    没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. ===== ...

  6. c语言快速入门3

    如果你想快速入门计算机,可以参考我的上一篇帖子,先了解一些必备的软知识,然后再来进行语言的快速入门 计算机入门基础知识 c语言快速入门1 c语言快速入门2 3.4.1 字符和字符串 字符:'' 单个  ...

  7. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  8. go语言快速入门教程

    go快速入门指南 by 小强,2019-06-13 go语言是目前非常火热的语言,广泛应用于服务器端,云计算,kubernetes容器编排等领域.它是一种开源的编译型程序设计语言,支持并发.垃圾回收机 ...

  9. Scheme语言实例入门--怎样写一个“新型冠状病毒感染风险检测程序”

    小学生都能用的编程语言 2020的春季中小学受疫情影响,一直还没有开学,孩子宅在家说想做一个学校要求的研究项目,我就说你做一个怎么样通过编程来学习数学的小项目吧,用最简单的计算机语言来解决小学数学问题 ...

随机推荐

  1. Android 适配器教程 (六)

    我们的适配器学习已经接近尾声了.尽管这不是一个大问题,可是确实是值得学习的一块知识,回忆一下之前五讲的知识.我们已经学到了非常多东西了. 在之前五讲中.我们已经由浅入深的认识了适配器,从最简单的Lis ...

  2. git 操作远程仓库地址

    查看所有远程仓库地址: git remote -v 更改远程仓库地址: git remote set-url origin newUrl 查看某一个远程仓库地址: git remote get-url ...

  3. Logical Volume Manager (Linux)

    http://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) Logical Volume Manager (Linux) From Wiki ...

  4. 「零秒思考」是个神话,不过这款笔记术你值得拥有zz

    今天读完了赤羽雄二的<零秒思考>,作者是一位在麦肯锡公司工作了 14 年的资深顾问.依照作者的说法,「零秒思考」指的是: 瞬间便能认清现状, 瞬间便能整理问题, 瞬间便能考虑出解决办法, ...

  5. 小贝_redis hash类型学习

    Redis  Hash类型 一.查看hash类型的命令 二.操作hash命令具体解释 一.查看hash类型的命令 1.输入 help@hash 127.0.0.1:6379>help @hash ...

  6. caffe学习--caffe入门classification00学习--ipython

    首先,数据文件和模型文件都已经下载并处理好,不提. cd   "caffe-root-dir " ----------------------------------分割线---- ...

  7. Centos7-安装Weblogic并配置 domain

    1.创建用户组 [root@localhost weblogic]# groupadd weblogic 2.创建 tmn 用户 [root@localhost weblogic]# useradd ...

  8. Javascript MVC 学习笔记(二) 控制器和状态

    今天进入第二个部分:控制器. 控制器和状态 从以往的开发经验来看.我们都是将状态保存在server的session或者本地cookie中,但Javascript应用往往被限制在单页面,所以我们也能够将 ...

  9. xlua学习过程遇到的问题,以后通了之后可能就不是问题了。但是还是有记录的必要。

    //2.加载lua文件,这里这种方式只能够加载Resources文件夹下面的,并且是lua.txt类型的文件,感觉没啥乱用. //文档你说的是Resources文件夹下面的才需要加txt后缀,那么就是 ...

  10. kong

    https://docs.konghq.com/install/centos/ wget https://bintray.com/kong/kong-community-edition-rpm/dow ...