认识指针、指针变量
指针——变量在内存中的存放地址。
指针变量——存放某一个地址的变量,其存放的值为一个地址。
举例:
如上图所示:
变量a的值为100,变量a的地址值为“0Xff61”
变量P的值为0Xff61,变量P的地址值为0Xff9c
由此可见,变量p为指针变量,它存放的是变量a的地址,而“0Xff61”是变量地址,同时也是a的指针。
指针变量的引用
(1)给指针变量赋值。如:
p=&a;
指针变量p的值是变量a的地址,p指向a。
(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指向的对象。
使用指针变量做函数参数
指针变量可以用来做为函数的参数,表示将一个变量的地址传送给一个函数
举例:
void swap(int * p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
函数功能:交换指针p1、p2所指向的地址空间中的数值。
通过指针引用数组
数组元素的指针就是数组元素的地址。
可以使用一个指针变量来指向一个数组元素,例如:
int a[5]={1,2,3,4,5}; //定义数组a
int *p; //定义指针变量p
p=&a[0]; //将a[0]元素的地址赋给指针变量p
引用数组元素时指针的变化特点
在指针指向数组元素时,可以对指针进行如下的运算:
加一个整数————用“+”或者“+=”,例如p+1
减一个整数————用“-”或者“-=”,例如p-1
自加运算————如P++
自减运算————如p--
两个指针相减——如p1-p2(只有p1和p2都指向一个数组中的元素时才有意义)。
引用一个数组元素的两种方法
(1)下标法:例如a[i]的形式。
(2)指针法:例如*(a+i)
通过指针变量引用字符串
代码实例:
#include "stdio.h"
int main(){
char * string="I love China!";
printf("%s\n",string);
return 0;
}
运行结果: