指针 变量的定义
一般格式 基类型名 *指针变量名
基类型名 ; 指针变量所指向的类型名称
- : 表示他后面的类型名是指针类型
指针变量名 : 所定义的指针变量的名称
赋初值
用=&变量名 来给指针变量赋初值
法一: int x,*p=&x;
法二:int x,*p; p=&x;
&符号后的变量名必须是 已近定义过的
基类型与指针变量类型相同
指针变量必须赋初值
一般指针变量还没有一个确切地址可以赋值的时候,
int *p=NULL; 空指针 // 空指针是一个定义在标准库的值为0 的常量
引用指针变量所指向的变量
用 *指针变量名 来指向该变量间接访问的变量
int x,*p=&x
*p=12
#include<stdio.h>
int zhizheng(int x)
{
int *p=&x;
*p=12;
return x;
}
int main()
{
int b,x=1;
b=zhizheng(x);
printf("%d",b);
return 0;
}
//指针变量 交换
#include<stdio.h>
int main()
{ int x,y;
int *p,*p1,*p2;
x=8;y=6;
p1=&x;
p2=&y;
if(x>y)
{ p=p1;
p1=p2;
p2=p;
}
printf("%d %d",*p1,p2);
return 0;
}
…指针变量加减一个整数n
/将指针指向的当前位置 向前或者向后移动n个偏移量(nsizeof(基类型))
//两个指针变量相加
#include<stdio.h>
int main()
{ int a=1,*p;
p=&a;
p=p+2;
printf("%d",*p);
return 0;
}
两个指针变量相减所得之差是两个指针所指变量之间相差的地址单元
实际上就是两个指针值及地址值相减之差再除以基本类型的长度,也就是它的字节数
p1 -p2=(2008-2000)/2=4
指针变量相加意义不大
p1==p2 指向同一变量
p1>p2 p1处于搞地质位置
p1<p2 p1处于地地址位置
指针的基础内容 经提供了一种间接访问变量的方式,似乎不··能发现指针的魅力所在, 指针真正的魅力是需要将后面的内容综合起来应用的
int *pi //整型指针变量 int(*qi)[5];//整型数组指针
char pc //字符型指针变量 charqc[5] //字符型指针数组
float *pf //浮点型指针变量 float(qf)(); //浮点型函数指针 ()是函数的标志
struct stups //结构体指针变量 struct stu *qs(); //结构体指针函数 ()函数标志
特别的指针还可以作为函数参数 来达到引用传递的目的
指针与一维数组
p=array; (将数组array首地址=》P)
p=&array[i] 将数组元素地址给=>p
#include<stdio.h>
void main()
{
int a[3],i;//一维整型数组
int *p =a;//整型变量
for(i=0;i<3;i++)
scanf("%d",&p[i]);
printf("\n");
p=a;
for(i=0;i<3;i++)
printf("%d",p[i]);
}//下标法访问
#include<stdio.h>
void main()
{
int a[3],i;//一维整型数组
int p =a;//整型变量
for(i=0;i<3;i++)
scanf("%d",p++);
printf("\n");
p=a;
for(i=0;i<3;i++)
printf("%d",(p++));
}//指针法访问