1-指针的指针.c
#include <stdio.h>
int main()
{
int num = 100;
int *p = #
int **q = &p; //q是指针的指针
//*q = (int *)100; //等价于 p = 100; p变成了野指针
//printf("%d\n", *p); //段错误
**q = 1; //num=1
printf("%d\n", num);
return 0;
}
2-指针和二维数组.c
#include <stdio.h>
int main()
{
int a[3][4] = {
{
1, 2, 3, 4}, {
2, 3, 4, 5}, {
3, 4, 5, 6}};
int i, j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
//用指针数组表示二维数组
int *p1[3] = {
a[0], a[1], a[2]};
for (i = 0; i < sizeof(p1) / sizeof(p1[0]); i++)
{
for (j = 0; j < sizeof(a[0]) / sizeof(int); j++) //&num &a[0]
{
printf("%d ", p1[i][j]);
}
printf("\n");
}
//用数组指针表示二维数组
int (*p2)[4] = a; //p2 = a;