指针基础概念

原创 2016年08月31日 21:41:15

转载请注明来源: http://blog.csdn.net/kjunchen/article/details/52389173

指针基础概念

指针是 C 语言的精华,正确灵活地运用,可使程序简洁、紧凑、高效。

指针是什么

“指针”即地址,一个变量的地址称为该变量的“指针”。

如果有一个变量专门用来存放另一变量的地址(即指针),则称它为“指针变量”。指针变量就是地址变量,用来存放地址,指针变量的值是地址(即指针)。

指针是一个地址,而指针变量是存放地址的变量。

指针变量

存放地址的变量是指针变量。

如何定义指针变量

定义指针变量一般形式为:

类型名 * 指针变量名

如:

int *pointer_1, *pointer_2;  

左端的 int 是在定义指针变量时必须指定的“基类型”。指针变量的基类型用来指定此指针变量可以指向的变量的类型。

说明
(1)指针变量前面的 “*” 表示该变量的基类型为指针变量。
(2)在定义指针变量时必须指定基类型。
(3)指向整型数据的指针类型表示为 “int *” ,读作 “指向 int 的指针” 或简称 “int 指针”。可以有 int * , char *, float * 等指针类型。
(4)指针变量中只能存放地址(指针),不要将一个整数赋给一个指针变量。

应用指针变量

在应用指针变量时,可能有 3 种情况。

1、给指针变量赋值。

p = &a;  //把 a 的地址赋给指针变量 p

2、应用指针变量指向的变量。

如果已执行 “p = &a” ,即指针变量 p 指向了整型变量 a ,则:

printf("%d", *p);

其作用是以整数形式输出指针变量 p 所指向的变量的值,即变量 a 的值。

*p = 1;

表示将整数 1 赋给 p 当前所指向的变量,如果 p 指向变量 a ,则相当于把 1 赋给 a ,即 “a = 1;”。

3、引用指针变量的值。

printf("%o", p);

作用是以八进制数形式输出指针变量 p 的值,如果 p 指向了 a,就是输出 a 的地址,即 &a 。

注意
(1) & 取地址运算符, &a 是变量 a 的地址。
(2) * 指针运算符(或称 “间接访问” 运算符), *p 代表指针变量 p 指向的对象。

实例展示:

#include <stdio.h>

int main() {
  int a = 100, b = 10;
  int *pointer_1, *pointer_2;
  pointer_1 = &a, pointer_2 = &b;
  printf("a = %d, b = %d\n", a, b);
  printf("*pointer_1 = %d, *pointer_2 = %d\n", *pointer_1, *pointer_2);
  return 0;
}

运行结果为:

a = 100, b = 10
*pointer_1 = 100, *pointer_2 = 10

指针变量作为函数参数

函数的参数不仅仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。

示例代码:

#include <stdio.h>

int main() {
  void swap(int *p1, int *p2);
  int a, b;
  int *pointer_1, *pointer_2;
  printf("Please enter a and b(format: a, b): ");
  scanf("%d, %d", &a, &b);
  pointer_1 = &a, pointer_2 = &b;
  if(a < b) swap(pointer_1, pointer_2);
  printf("max = %d, min = %d\n", a, b);
  return 0;
}

void swap(int *p1, int *p2) {
  int temp;
  temp = *p1;
  *p1 = *p2;
  *p2 = temp;
}

运行结果:

Please enter a and b(format: a, b): 25, 66
max = 66, min = 25

swap 是用户自定义函数,它的作用是交换两个变量( a 和 b )的值。swap 函数的两个形参 p1 和 p2 是指针变量。

用指针变量作为函数参数,在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值得变化依然保留下来。

通过调用函数使变量的值发生变化,在主调函数中可以使用这些改变了的值。

不能企图通过改变指针形参的值而使指针实参的值改变。

C 语言中实参变量和形参变量之间的数据传递时单向的“值传递”方式。用指针变量做函数参数时同样要遵循这一规则。不可能通过执行调用函数来改变实参变量的值,但是可以改变实参指针变量所指变量的值。

注意: 函数的调用可以(而且只可以)得到一个返回值(即函数值),而使用指针变量作参数,可以得到多个变化了的值。

欢迎加QQ群交流: 365532949
Homepage: http://junkchen.com

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

指针基础概念

第一节;简述指针的一些概念 都是在C的语言基础上的;本人开始细学指针,所以有错误或不严谨的地方请大家多多指出。 刚开始可能会有的晕,但详细介绍的; 一;关于地址的一些概念1。内存单元;在计算机中...
  • zw1996
  • zw1996
  • 2016年05月05日 17:12
  • 199

复习 C 指针的基础概念

概            念:指针就是地址 数组的关系:数组名就是数组的首地址 开始定义的时候加*,     比如: int *p;/*这里加*是表示p是一个int型的指针*/ ...

C语言基础指针概念

本文全是来自网络   指针的概念:   指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址   指针需要明白四个方面:指针的类型,指针所有指向的类型,指针的值或者指针所指向的内存...

黑马程序员---IOS基础---指针的概念及用法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-----指针的概念及用法 一、指针定义 指针:对于一个内存单元来说,单元的地址就是指针。 二、指针变量 ...

日拱一卒之C++基础一 指针与引用基本概念

指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名,引用不改变指向。"...

C++基础概念-数组、指针和字符串

分类: Linux c++开发 电子书 2013-09-09 22:56 779人阅读 评论(0) 收藏 举报 目录(?)[+] 数组、指针和字符串是C++语言中很重...

数据结构与算法基础(二)之线性表的链式存储与指针的概念

上一节我们讨论到了线性表的顺序存储结构的缺点,那就是在进行插入和删除操作的时候需要移动大量的元素,为了解决这个问题,我们可以想到的方法有很多,比如说在相邻元素之间留出一定的位置给待插入的元素使用,但是...

C/C++基础知识:函数指针和指针函数的基本概念

【函数指针】       在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代...

(转)基础概念:从概念及汇编角度解释指针本质

基础概念:从概念及汇编角度解释指针本质 Category: C/C++,基础概念 — Feng @ 上午 10:02   作者:gfree.wind@gmail.com 博客:bl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指针基础概念
举报原因:
原因补充:

(最多只允许输入30个字)