指针
一、指针的概念
指针即地址,一个变量的指针就是指该变量的地址。注意:指针变量中只能存放地址。
二、指针变量的定义和引用
1、指针变量的定义
int *p; 此语句定义了一个指针变量p,p中可存放一个整型变量的地址。
注意: *是指针变量的特征只是分配了一个存储单元,并没有指真正指向,要想使一个指针变量指向一个整型变量必须赋值。例如::int *p,I=3;
p=&I;
如果p=3就是错误的。
2、指针变量的引用(两个有关指针的运算符)
& 取地址运算符号
* 指针运算符指针函数的作用 *p表示p所指向的变量值。
int *p,a;
p=&a; /*指向变量a的值赋给p*/
scanf(“%d”,p); /*从键盘输入一个值赋值给p所指向的变量a*/
*p=5; /*把5赋值给变量p所指向的a*/
三、指针作为函数参数
函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中
四、指针与数组
1、一维数组的指针表示方法
(1)数组中各元素的地址。
int a[10]={1,2,3,4,5,6,7,8,9,10};
①&a[0] &a[1] &a[2] 、、、&a[i]、、、&a[9]
②a a+1 a+2 、、、a+i、、、、、a+9
(2)数组元素值
①a[0] a[1] a[2] 、、、、a[i]、、、、a[9]
②*(a+0) *(a+1) *(a+2)、、*(a+i) *(a+9)
2、二维数组的指针表示方法
例:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
1、每行的起始地址
&a[0][0] &a[1][0] &a[2][0]
a[0] a[1] a[2]
a+0 a+1 a+2
④*a *(a+1) *(a+2)
⑤&a[0] &a[1] &a[2]
2、各元素的地址
①&a[0][0] &a[0][1] &a[0][2]
②a[0]+1 a[0]+2 a[1]+2
③*a+1 *(a+1)+1 *(a+2)+2
3、各元素的值
①*(&a[0][0]) *(&a[0][1]) *(&a[0][2])
②*(a[0]+1) *(a[0]+2) *(a[1]+2)
③*(*a+1) *(*(a+1)+1) *(*(a+2)+2)
四、指针与数组;
printf(“%d”,*p);
注意:
int (*p)[5]表示p是指针变量,它指向一个包含5个元素的一维数组
int *p[5] 是指针数组。
3、数组指针作为函数参数
数组名代表数组起始地址,用数组名作参数传递的是地址(将数组起始地址传递组被调用函数的形参),既然地址可以作为参数传递,那么指向数组的指针变量当然也可以作为函数参数。
五、字符串与指针
1、定义:
char *s
2、初始化
char *s=”china”;
只把china的首地址赋给指针变量s。
4、输入、输出
指针:char str1[20],*str2=str1;
scanf(“%s”,str2); printf(“%s”,str2);
八、指针数组和指向指针的指针
1、指针数组
char *s=”china”
char *name[5]={“Li Fun”,”Zhang li”,”li tian”,”su fang ”,”wang le”};
2、指向指针的指针
char **p;表示指针变量p是指向一个字符指针变量。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论