指针基础概念
来源:互联网 发布:sql删除表数据 编辑:程序博客网 时间:2024/06/09 15:04
转载请注明来源: 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, 66max = 66, min = 25
swap 是用户自定义函数,它的作用是交换两个变量( a 和 b )的值。swap 函数的两个形参 p1 和 p2 是指针变量。
用指针变量作为函数参数,在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值得变化依然保留下来。
通过调用函数使变量的值发生变化,在主调函数中可以使用这些改变了的值。
不能企图通过改变指针形参的值而使指针实参的值改变。
C 语言中实参变量和形参变量之间的数据传递时单向的“值传递”方式。用指针变量做函数参数时同样要遵循这一规则。不可能通过执行调用函数来改变实参变量的值,但是可以改变实参指针变量所指变量的值。
注意: 函数的调用可以(而且只可以)得到一个返回值(即函数值),而使用指针变量作参数,可以得到多个变化了的值。
欢迎加QQ群交流: 365532949
Homepage: http://junkchen.com
- 指针基础概念
- 指针基础概念
- C语言基础指针概念
- 复习 C 指针的基础概念
- C++基础概念-数组、指针和字符串
- 基础概念:从概念及汇编角度解释指针本质
- 20161217C语言基础20_指针的基础概念
- 指针概念
- 黑马程序员---IOS基础---指针的概念及用法
- 【C++基础概念】有关指针、引用的几个问题
- (转)基础概念:从概念及汇编角度解释指针本质
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- 基础概念
- kali vpn配置
- Wamp错误: Forbidden You don't have permission to access / on this server.
- spring mvc和struts2的区别
- Unity UI(五):交互式控件之Button
- 二叉搜索树转换为双向链表
- 指针基础概念
- Java反射应用
- JS中的其他跨域技术
- codeforces708BRecover the String+数学构造
- Cookie的应用:显示用户上次浏览过的商品
- linux驱动开发经验逐步积累2
- Java异常处理和设计
- XML解析常用的技术
- Spark性能优化第十季之全球独家揭秘Spark统一内存管理