day08

指针数组
int *a[10];//sizeof(a)   sizeof(a[0])
short* a[10]
二级指针

指向一级指针的地址
int **pp=&p;
*pp=10;//p变成一个野指针
图示说明


day08_第1张图片
image.png
    int a=10;
    int *p=&a;//
    int **pp=NULL;
    pp=&p;
    *pp=*pp+1;//
    printf("%p  %p  %d\n",p,*pp,*p);
    getchar();

结论:
一级指针和变量a的地址都没有变化,只是通过*pp改变了p的指向,结合数组分析。

指向二维数组的指针

char arr[2][10]={{"hello"},{"world"}};
char **pp=NULL;
pp=arr;

指针与二维数组

1、 a+1 指向的是第一行的元素,也就是指向一个一维数组
2、 a[1] 指向的是第一行,第0列的元素的地址
3、 *(a+1) 指向的是第一行,第0列的元素的地址
4、 a[1]+2 指向的是第一行的第二列的元素的地址
5、 *(a+1)+2 指向的是第一行的第二列的元素的地址
6、 *(a[1]+2) 指向的是第一行的第二列的元素
7、 ((a+1)+2) 指向的是第一行的第二列的元素

注意:
二位数组的名字代表的是二级指针;
[]可以等同理解为解引用(类似于* 的解引用的方式)

你可能感兴趣的:(day08)