C语言学习笔记2.doc
文本预览下载声明
Day06
指针
指针的基本概念
①.变量与地址
②.指针与指针变量
1.指针:某个对象所占用的存储单元的首地址。
2.指针变量 :专门存放变量地址的变量。
③.直接访问与间接访问
1.直接访问:
2.间接访问:
指针变量的定义和引用
①.定义:
基类型 *指针变量名; 如: int *p1,*p2;
注:1.只能存放地址,不能赋值,0(NULL)除外;
2.初值:变量名 数组元素 和 数组名
②.引用:*pa ,a -值 ; a ,pa-地址
[root@localhost C]# cat 32.c 33.c
#includestdio.h
void main(){
int a=1,b=2,t;
int *pa=a,*pb=b;
t=*pa;*pa=*pb;*pb=t;
printf(a=%d,b=%d,a,b);
printf(*pa=%d,*pb=%d,*pa,*pb);
}
#includestdio.h
void main(){
int a=1,b=2;
int *pa=a,*pb=b,*t;
t=pa;pa=pb;pb=t;
printf(a=%d,b=%d,a,b);
printf(*pa=%d,*pb=%d,*pa,*pb);
}
[root@localhost C]# ./test32
a=2,b=1*pa=2,*pb=1
[root@localhost C]# ./test33
a=1,b=2*pa=2,*pb=1
③.算术运算
④.函数的参数
[root@localhost C]# cat 34.c
#includestdio.h
void main(){
void swap(int *pa1,int *pb1);
int a,b;int *pa,*pb;
scanf(%d,%d,a,b);
pa=a;pb=b;
swap(pa,pb);
printf(%d,%d\n,a,b);
}
void swap(int *pa1,int *pb1){
int t;
t=*pa1;*pa1=*pb1;*pb1=t;
}
指针与一维数组
①.通过指针变量引用数组元素
如: int a[10]={1,2,3,4,5,6,7},*p;
p=a[5];
Printf(“%d”,*p);// 6
注:指针变量可以存放数组的起始地址
如: int a[10];
Int *pa;
pa=a; // 等价于pa=a[0]
牢记:a[i]==pa[i]==*(pa+i)==*(a+i)
例:(指针法)
12345[root@localhost C]# ./test35
1 3 4 5 7
13457[root@localhost C]# cat 35.c
#includestdio.h
void main(){
int a[5];
int *p=a;
int i;
for(i=0;i5;i++)
scanf(%d,p+i);
for(i=0;i5;i++)
printf(%d,*(p+i));
}
(指针移动法)
[root@localhost C]# ./test35
1 2 3 6 5
12365[root@localhost C]# cat 35.c
#includestdio.h
void main(){
int a[5];
int *p=a;
for(;pa+5;p++)
scanf(%d,p);
for(p=a;pa+5;p++)
printf(%d,*p);
}
指针与二维数组
指针与字符串
指针与函数
二级指针与指针数组
显示全部