> 文章列表 > 复习C——指针

复习C——指针

复习C——指针

指针变量存储的不是变量,而是变量的地址
指针是c的精髓

指针和指针变量

1.通过变量的地址可以找到该变量所在的存储空间,所以说该变量的地址指向该变量所在的存储空间,该地址是指向该变量的指针。
2.定义:变量类型* 变量名
3.初始化:
(1)接受变量的地址;

int a=10;
int* p;
p=&a;

(2)与其他指针变量指向同一块存储空间;

int *q;
q=p;

(3)定义时同时赋值。

int a=10;
int* p=&a;

&(取址运算符):取变量所在的地址
*(取值运算符):取出变量指向的地址中存储的数据
4.指针变量的引用
根据指针变量存放的地址,访问该地址对应的变量:*指针变量名

#include<stdio.h>
int main(){int a=10;int* p=&a;printf("%d\\n",*p); return 0;
}

5.补充
(1)不确定指针在何时何处使用时,可以让它指向空

int* p=0;//0时唯一不必转换就可以赋值给指针的数据 
int* q=null;//null是一个宏定义,其作用与0一样 

(2)无类型指针:void* ;

	void *p=NULL,*q;//定义两个无类型指针,其中一个指向nullint* m=(int*)p;int a=10;q=&a; 

指针作为函数参数

因为实参和形参之间的数据传递是单向的值传递,所以使用指针变量作为函数的形参,通过传递地址的方式,使形参和实参都指向主调函数中数据所在地址,从而使被调函数可以对主调函数中的数据进行操作。

指针的交换

1.指针指向交换;

#include<stdio.h>
int main(){int *temp=0;int a=10,b=20;int* p =&a;int* q =&b;temp=p;p=q;q=temp; printf("%d\\n",*p);printf("%d",*q);
}

2.指针所指地址中存储数据的交换。

#include<stdio.h>
int main(){int a=10,b=20;int* p =&a;int* q =&b;int temp=0;temp=*p;*p=*q;*q=temp; printf("%d\\n",*p);printf("%d",*q);
}