二级指针只服务于一级指针的偏移和传递。
1.二级指针传递的使用场景:
主要用于对一级指针的修改
第一,二级指针变量的定义在形参,第二,调用函数中一般不定义二级指针,如果定义,初始化时是一级指针的去地址。
#include<stdio.h>
#include<stdlib.h>
int i=5;
*p=q;
}
int main(){
int i=5;
int j=10;
int *pi;
int *pj;
pi=&i;
pj=&j;
printf("i=%d pi=%d pj=%d\n",i,*pi,*pj);
change(&pj,pi);
printf("i=%d pi=%d pj=%d\n",i,*pi,*pj);
system ("pause");
return 0;
}
2.二级指针的偏移
一级指针的偏移服务于数组,二级指针的也服务于数组,服务对象是指针数组
32位,每次偏移的大小都是指针的大小即四个字节
64位,每次偏移的大小都是指针的大小即八个字节
#include<stdio.h>
#include<stdlib.h>
void print(char *p[]){
int i;
for(i=0;i<5;i++){
puts(p[i]);
}
}
int main(){
char b[][5]={"xiao","bai","cai","zhu","ju",};
char *p[5];
char **q;
int i,j,temp;
for(i=0;i<5;i++){
p[i]=b[i];
}
q=p;
print(q);
puts("q_________ ___________q");
for(i=0;i<5;i++){
puts(b[i]);
}
puts("b__________ __________b");
for(i=0;i<5;i++){
puts(p[i]);
}
puts("p__________ __________p");
system ("pause");
return 0;
}