C语言_指针变量

1.指针的定义

将地址形象化地称为“指针”,地址指向该变量单元。

按变量名访问称为直接访问

使用指针称为间接访问(把变量地址赋给一个指针变量,间接访问,变量地址做中间量)

指针变量:是用来存放地址的变量

指针是一个地址

2.指针变量的定义

类型名 * 指针变量名;
int * pointer_1, *pointer_2;    //int是“基类型” int只能指向为整型的变量
float * pointer_3;                //float指针
char * pointer_4;                //char指针

指针变量前面的 * 表示该变量是指针变量,指针名是pointer_1

3.指针变量的引用

int a=1;
int * pointer_1;   
pointer_1=&a     //把a的地址赋值指针变量p
print("%d", *p);

*p=1  //等价 a=1

(1)& 取地址运算符,&a是变量a的地址

(2)* 指针运算符(或称 “间接访问” 运算符),*p代表指针变量p指向的对象

4.指针变量作为函数参数

void swap(int *p1,int *p2);    //声明
swap(pointer_1,pointer_2);    //调用

5.通过指针引用数组

(1)数组元素指针就是数组元素的地址

int *p;
p=&a[0];
等价于
int *p=&a[0];

(2)数组元素的指针运算

指针加一个整数(+或+=) 如:p+1

指针减一个整数(用-或者-=)如:p-1
自增运算,如 p++,++p
自减运算,如 p--,--p

p+1指向同一个数组中的下一个元素
p-1指向同一个数组中的上一个元素

(3)数组的引用方式

(1)下标法    a[i]
(2)指针法    *(a+i)或 *(p+i)

(4)用数组名做函数参数

以变量名和数组名作为参数的比较
实参类型变量名数组名
要求形参的类型变量名数组名或者指针变量
传递的信息变量的值实参数组首个元素的地址
通过函数调用能否改变实参的值不能改变实参变量的值能改变实参数组的值
int sort(int * p,int n);
//    等价于
int sort(int a[],int n)

//    调用
int *p,a[10];
p=a;
sort(a,2);
sort(p,2)

6.通过指针引用多维数组

二维数组a的有关指针
 表示形式含义地址
a二维数组名,指向一维数组a[0],即是0行首地址2000
a[0],*(a+0),*a0行0列元素地址2000
a+1,&[1]1行首地址2016
a[1],*(a+1)1行0列元素a[1][0]的地址2016
a[1]+2,*(a+1)+2,&a[1][2]1行2列元素a[1][2]的地址2024
*(a[1]+2),*(*(a+1)+2),a[1][2]1行2列元素a[1][2]的值元素值为13

用指向数组的指针作为函数参数

void search(float (*p)[4],int n);

一维数组有4个元素,因此p的基类型是一维数组,其长度为16字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值