目录

一、指针与指针变量

1、地址

2、指针与指针变量的介绍

二、指针变量的定义与引用

1、变量的存取方法

2、指针变量的定义

3、指针变量的赋值

4、指针变量的引用


一、指针与指针变量

1、地址

在计算机中,所有的数据与程序都必须被加载在内存中才能运用,c语言的数据都被存放在一个个内存单元中每个存储单元都有一个编号,而这个编号就是存储单元的地址,每个存储单元都有一个与之对应的地址数据与程序就被放在这些内存单元中。

2、指针与指针变量的介绍

内存区的每一个字节都有一个编号,这就是地址,而指针的实质就是内存地址。在c语言中,可以用一个变量来存放指针,这就是指针变量,因此,一个指针变量的值就是某个内存单元的地址,为避免混淆,我们规定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。在一个指针变量中存放一个数据的意义在于:我们可以通过访问指针变量来取得一个数据的地址,从而也就找到了该数据。

二、指针变量的定义与引用

1、变量的存取方法

通过变量名来引用变量的内存单元值的方法为直接引用,而通过内存地址来引用内存单元值的方法为间接引用。

如下:

#include<stdio.h>
main()
{int a=2;int *p=&a;printf("%d\n",a);printf("%d",*p);} 

输出结果为:

2

2

其中,第一个printf表示对a进行直接引用,第二个表示通过a的内存地址来对a进行间接引用

2、指针变量的定义

指针变量的定义格式为:

[存储类型]        数据类型符        *变量名;

其中,数据类型符指的是指针变量所指向的目标变量的数据类型,定义格式说明如下:

1、*号表明后面的变量是指针变量

2、变量必须是合法的标识符

3、存储类型是指针变量本身的存储类型

如下几种定义方式:

#include<stdio.h>
int *p1;
staic int *p2;
float *p3,a;
float a,*p3;
char *p4,*P5;

第一个定义表示p1是一个指针变量,它的只是某个整形变量的地址。第二个定义表示指针变量p2被分配在内存的静态储存区,它是静态指针变量。第三个定义中表示定义了指针变量p3和一个浮点型变量a。第四个定义表示同时定义了两个指针变量p4,和p5.

注意:在这几个例子中指针变量名是p1,p2等,而不是*p1,*p2,前面的*号只是表示这个变量是一个指针变量,*号与变量之间可以加若干个空格,如下:

#include<stdio.h>
int *p1;
int* p1;
int *  p1;

这几种定义方式都是完全相同的。

3、指针变量的赋值

指针变量与其它普通变量一样,在使用之前必须定义并且赋初值,否则其指向的地址是不确定的,在对指针变量进行初始化的时候,需要将需要指向的变量的地址赋给指针变量,在c语言中可以用地址运算符&来表示变量的地址,如&p表示变量p的地址,变量初始化的一种方法为:

int a;

int *p=&a;

赋值时为指针变量赋的值必须是一个地址。当定义一个字符型的指针变量的时候就不能将一个其他类型的变量的地址赋给它。当不清楚将一个指针变量赋值为什么值的时候,可以先将它定义为一个空指针,指针变量值为0的指针为零指针(空指针),其用途有两个:一是避免指针变量的非法引用,二是在程序中作为状态比较

4、指针变量的引用

当一个指针指向一个变量的时候,程序就可以间接引用这个变量,如下:

#include<stdio.h>//用指针变量修改指向的变量的值
main()
{int a;int *p=&a;*p=10;printf("%d\n",a);printf("%d\n",*p);(*p)++;printf("%d,%d",a,*p);} 

输出结果为:

10

10

11 ,11

在程序中的*号是间接引用运算符,是单目运算符,其优先级与++、--的优先级相同,右结合性。其中的(*p)++相当于a++,运用指针实现了间接对a的值进行改变

C语言指针与指针变量相关推荐

  1. c语言指针访问 静态变量_使用C中的指针访问变量的值

    c语言指针访问 静态变量 As we know that a pointer is a special type of variable that is used to store the memor ...

  2. c语言位向量机伞_一文读懂C语言精华-指针变量和指向指针的指针

    1978年贝尔实验室正式发表C语言,受到众多IT从业者的热捧,即使41年过去了,C语言仍然牢牢占据最受欢迎编程语言前二的位置,许多人的程序开发之路也是从C语言开始的. 编程语言受欢迎排名 C语言简洁紧 ...

  3. 翁恺老师C语言学习笔记(十)指针_指针变量就是记录地址的变量

    指针变量就是记录地址的变量 scanf函数 · 如果能够将取得的变量的地址传递给一个函数,能否通过这个地址在那个函数内访问这个变量 · scanf("%d", &i) · ...

  4. c语言 乘号 指针 避免,C语言指针篇(一)指针与指针变量

    指针 1. 什么是指针? 2. 指针可不可怕? 3. 指针好不好玩? 4. 怎么学好指针? C语言是跟内存打交道的语言,指针就是内存地址.指针无处不在,指针并不可怕,相反,等你学到一定程度后,会有一种 ...

  5. c语言两个指针变量不可以,2.C语言指针变量

    # 2.C语言指针变量 变量的指针就是变量的地址.存放变量地址的变量是指针变量.即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量.因此,一个指针变量的值就是某个变量的地址或称为某变量的指针 ...

  6. 一文搞懂C语言如何用指针来代替变量和数组进行数据的存储

      众所周知,指针的用法最常见的无外乎两种,一种是用指针来指向变量的内存地址,通过操控指针进而可以间接的操控变量.另外一种是把指针当成变量来使用,像变量一样可以存储数据.数组也是类似的道理,因为数组实 ...

  7. C语言 数组的指针和指向数组的指针变量

    一.回顾二维数组和多维数组的概念 int a[3][4];  //二维数组 int a[2][3]4];  //多维数组 二.指向多维数组的指针和指针变量的探究 可以把a看成是一个一维数组,这个一维数 ...

  8. 指针与指针变量的区别(C语言)

    提示:本章主要谈及个人对C语言指针和指针变量的理解 文章目录 前言 一.指针是什么? 二.指针变量是什么? 三.知识拓展 总结 前言 指针是C语言中的一个很重要的concept,掌握指针的应用,可以使 ...

  9. c语言指针赋值指针变量赋值吗,C语言_指针变量的赋值与运算,很详细

    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值.未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址, 决不能赋予任何其它数据 ...

最新文章

  1. ios模拟器快捷键操作
  2. fatal error C1021: 无效的预处理器命令“warning”
  3. 单链表的实现:增删改查
  4. matplotlib - 3D scatter plot
  5. 微软CEO纳德拉拥抱Linux意欲何为?
  6. 区域赛铜牌专题(一)
  7. python︱模块加载(pip安装)以及pycharm安装与报错解决方式
  8. pycharm的markdown文件编写
  9. const 使用方法具体解释
  10. 实验板FPGA型号在哪里看_项目分享| 自制FPGA最小系统板(PCB可直接打板)
  11. MICCAI 2019 Poster
  12. 考查频率最高的吉林八景
  13. 数组和集合之间的转化
  14. 以下计算机网络新技术是什么,计算机网络新技术概述
  15. python自动下载小说
  16. iOS应用程序的辅助功能:辅助功能检查器
  17. 数据结构基础 之 递归算法实例讲解
  18. 三相电流滞环跟踪PWM控制
  19. PHP strtoupper函数解析
  20. 当你学会炒菜的时候,你就学会了大数据

热门文章

  1. mysql php 乱码问题_php mysql 中文乱码问题的解决办法
  2. 如何查找session过期时间
  3. C++未经处理的异常...stackoverflow(参数: 0x0000000000000001...)-- 分配大内存
  4. Halcon 深度学习自定义网络模型-ResNet通用网络产生器
  5. 使用Druid,C3P0连接池连接达梦主备集群
  6. 嵌入式开发<单片机软件升级>
  7. BlockCode 少儿编程软件工具 0 入门
  8. cip核字号验证_cip数据核字号的全称是什么
  9. Mac系统下matplotlib中SimHei中文字体缺失报错的解决办法
  10. 复杂网络中衡量网络中节点中心性的几种度量指标