一、指针与指针变量

1、指针即是地址

目前已知,内存中每个存储单元都有存储地址。根据存储地址即可准确地找到该内存单元。所以通常也吧这个地址称为指针。也就是说,指针实际上就是内存地址。那么变量的地址就是该变量的指针。

2、指针变量就是专门用于存储其他变量地址的变量

在c语言中,允许用一个变量来存放指针,这种变量即为指针变量。因此,一个指针变量的值就是某个内存单元的地址。严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量称为指针。因易弄混,所以约定俗成:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。

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

        1、变量值的存取方法

C语言中可以通过变量名来引用变量的内存单元值。如下面定义了两个变量。

int a,b;

那么a=2;表示将a的内存单元赋值为2,而b=a则表示将a的内存单元的值复制到b的内存单元中。

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

2、指针变量的定义

指针变量的定义格式:

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

定义格式说明如下:

·存储类型是指指针变量本身的存储类型。

·数据类型符可以是任何一种有效的数据类型标识符,是指针变量所指向的内存单元的数据类型。

3、指针变量的赋值

指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱。指针变量的赋值只能赋予地址,绝不能赋予任何其他数据,否则将引起错误。C语言提供了地址运算符&来表示变量的地址。其一般形式为:&变量名,如&a表示a的地址,&b表示变量b的地址。同一般变量一样,指针变量必须预先说明。

一般有以下两种形式:

1、指针变量初始化:

int a;
int *p=&a;

2、赋值语句:

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

应该注意的是,原则上一个指针变量只能指向同类型的变量,即指针变量类型应与被指向的变量类型相同,且只可一对一指向,不可一个指针变量指向多个变量。

三、指针变量的引用

当一个指针指向一个变量时,程序就可以利用这个指针间接引用这个变量。间接引用的格式是:*指针变量。在指针变量说明中,“ * ”是类型说明符,表示其后的变量是指针类型,而表达式中出现的“ * ”则是一个运算符用以表示指针变量所指的变量。

如:

int a,*p;
p=&a;
*p=10;
a++;
printf("a=%d,*p=%d",a,*p);

输出是:

a=11.*p=11

程序中 *是间接引用运算符,是单目运算符,优先级与++、--的优先级相同,具有右结合性。

C语言程序——指针(1)相关推荐

  1. 一个关于C语言程序指针的用法(其中之一·)

    这是一个c语言程序,在网上也能找到相似甚至几乎相同的程序,但是就是因为很轻松就找到了,会有各种奇怪的错误,但大部分都是编译器(32位(x86)和64位)的问题,还有的就是一些语法的问题,列如scnaf ...

  2. 冒泡法排序c语言程序指针,C语言_冒泡排序(指针)

    一纬数组 #include "stdio.h" void main() { int i,a[10]={9,4,6,2,7,0,1,5,3,8}; sort(a+1,10); for ...

  3. 用C语言用指针怎么算通用定积分,C语言:利用指针编写程序,用梯形法计算给定的定积分实例...

    题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: 参考代码 首先说明一下指针的用处:因为所传递的参数均为数字,并不需要使用指针提高效率,故这里使用指针指向函数. 请注意calc()函数中的 ...

  4. c语言课后作业答案指针,C语言程序基础练习题带答案

    C语言程序基础练习题带答案 C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value).下面是小编为大家搜索整理的C语言专项训练 ...

  5. 动物识别系统 c语言代码_C ++程序员避不开虚函数的,就像C语言程序员避不开指针一样...

    初学者刚接触C++语言中的 virtual 函数(虚函数)时,常常会感觉到迷惑,比如,书上说虚函数定义在基类中,其他继承此基类的派生类都可以重写该虚函数,因此虚函数是C++语言多态特性中非常重要的概念 ...

  6. 指针法算中点坐标c语言,C语言:利用指针编写程序,用梯形法计算给定的定积分实例...

    题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: 参考代码 首先说明一下指针的用处:因为所传递的参数均为数字,并不需要使用指针提高效率,故这里使用指针指向函数. 请注意calc()函数中的 ...

  7. c语言程序与设计苏小红,c语言程序设计苏小红

    <实验教学示范中心建设教材·国家精品课程主讲教材:C语言程序设计(第2版)>是一本兼具趣味性和实用性的C语言程序设计教材.全书由13章组成,内容包括:为什么要学C语言,C数据类型,简单的算 ...

  8. c语言220程序,《C语言程序实例大全》原代码220例

    <C语言程序实例大全>,一共220个. 找了很多地方都不全,最后在CSDN上用积分下载了这个,C语言初学者可以参考. 下载地址: http://doc.xuehai.net/tp09770 ...

  9. 对c语言和程序设计基础的体会,C语言程序设计基础与应用

    <C语言程序设计基础与应用(高等院校计算机教育系列教材)>由刘丽.朱俊东.张航编著,本书内容由浅入深.循序渐进,介绍C语言的基本语法知识和程序设计等内容,同时兼顾了全国计算机等级考试二级C ...

最新文章

  1. vsftp和nfs服务
  2. myeclipse定位代码文件位置
  3. 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
  4. python提示错误TypeError: 'dict_keys' object does not support indexing
  5. 我同事吃的辅酶Q10到底有没有效果?
  6. 怎么判断当前的os类型,手机类型
  7. WPF实现Map加载
  8. 根据谁创建资源授权资源
  9. 欧洲的数据中心与美国的数据中心如何区分?
  10. Hive thrift服务--beeline使用
  11. 华为开发者大会鸿蒙2.0系统,鸿蒙2.0来了!华为开发者大会HDC 2020宣布
  12. 软件测试--用例编写
  13. python opencv 裁剪图片_python通过opencv实现图片裁剪原理解析
  14. 英特尔推出SD卡巨细电脑 配Atom处理器
  15. 多玩网总裁李学凌:在腾讯阴影下
  16. snmp使用默认团体名_snmp默认团体名/弱口令漏洞及安全加固
  17. 从修复 testerhome(rubychina)网站的一个 bug 学习 rubyrails on ruby
  18. springboot配置内存数据库H2
  19. node mysql实现登陆注册_使用 NodeJs 链接 mysql 的实现登录与注册
  20. 移动端H5实现手动选择地图点的一种解决方案

热门文章

  1. 2021-2025年中国减压阀行业市场供需与战略研究报告
  2. 辨析BI、数据仓库、数据湖和数据中台内涵及差异点
  3. 腾讯云对象存储COS的使用
  4. 石头科技打造硬核品牌力 持续出海拓展全球市场
  5. 计算机图形学笔记(一)渲染管线概述
  6. C程序中的#line意义何在
  7. IDE暗黑主题推荐-Dracula
  8. 修改数据库某个字段的长度时出现“无法修改表。无法对 表‘XXX‘ 执行 删除,因为它正用于复制。”
  9. 严肃游戏的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 中考大数据大连79_中考大数据 | 大连各初中2017中考成绩统计②(理附两校区、海附)...