C语言基础-指针
1)声明一个int类型的变量
int a = 10;
声明一个指针指向这个常量的地址
int * b = &a;
使用指针取出a的值赋值给c:
int c = * b;
2)数组和指针
首先声明一个字符数组
char a[5] = {'a','b','c','d','e'};
或者 char a[] ={'a','b','c','d','e'};
或者 char a[] = "abcde";
声明一个字符指针
char * b = a;
取出a数组中的元素
char c = * b;
c = * (b+1);
...
指针数组(存储指针的数组)
int a[3] = {1,2,3};
int b[3] = {4,5,6};
int c[3] = {7,8,9};
int * d[3] = {a,b,c};
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
printf(@"=%d",d[i][j]);
//或者
printf(@"=%d",( * (d+i))[j]);
//或者
printf(@"=%d", * (( * (d+i))+j));
}
}
和二维数组差不多
数组指针(指向一个数组的指针)
int a[3] = {1,2,3};
int ( * p1)[3];或者int ( * )[3] p1;
p1 = &a;
printf(@"%d", * ( * p1+1));
3)数组作函数的参数,数组作为参数会退化成指针
定义一个数组
int a[5] = {1,2,3,4,5};
定义一个函数
void add(int * b){
int c ;
c = * b + * (b+1);
c = b[0]+b[1];
};
调用:add(a);
4)函数指针
定义一个函数
void add(int a,int b){
a+b;
}
int main(){
//声明一个函数指针
void ( * funP)();
funP = &add;
funP(10,100);
}
5)函数指针数组
定义多个个函数
void add1(int a,int b){
a+b;
}
void add2(int a,int b){
a+b;
}
void add3(int a,int b){
a+b;
}
int main(){
//声明一个函数指针数组
void ( * funP[3])();
funP[0] = &add1;
funP[2] = &add2;
funP[3] = &add3;
funP [ 0 ] (10,100);
funP [ 2 ] (20,200);
funP [ 3 ] (30,300);
或者
( * funP[0])(10,100);
( * funP[1])(20,200);
( * funP[2])(30,300);
}