指针
1.1指针的定义
指针就是地址 地址就是指针
指针变量就是存放内存单元编号的变量 也可以说指针变量就是存放地址的变量
指针和指针变量不是同一个概念
C语言的地址包括位置信息和它所指向的数据的类型信息
如&a,一般称它是“变量a的地址”,确切地说,它是“整型变量a的地址”。
1.2指针变量
(1)定义指针变量的一般形式为:
类型名 指针变量名
int *pointer_1, *pointer_2;
左端的int是在定义指针变量时必须指定的基类型*,指针变量的基类型用来指定此指针变量可以指向整型的类型
指针变量前面的“ * ”表示该变量为指针型变量
(2)一个变量的指针的含义包括两个方面,一是以存储单元编号的纯地址(如编号为2000的字节),一是它指向的存储单元的数据类型(如 int,char,float等)
(3)指向整型数据的指针类型表示为“ int”,读作“指向int的指针”,或简称“int指针”*
(4)指针变量中只能存放地址(指针),不要将一个整数赋给一个指针变量。如:
*pointer_1=100; //pointer_1是指针变量,100是整数,不合法。
1.3指针变量的引用
在引用指针变量时,可能有3种情况:
(1)给指针变量赋值。如:
p=&a; //把a的地址赋给了指针变量p
指针变量p的值是变量a的地址,p指向a。
(2)引用指针变量指向的变量。
如果已执行“p=&a;”,即指针变量p指向了整型变量a,则
printf("%d",*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指向的对象
1.3指针变量作为函数参数
函数的参数不仅可以是整型,浮点型,字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。
如:
#include<stdio.h>
#include<stdlib.h>
int main()
{
void swap(intp1, intp2);
int a, b;
intpointer_1, pointer_2;
printf(“please enter a and b:”);
scanf_s("%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);
system(“pause”);
return 0;
}
void swap(intp1, intp2)
{
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}