BaysideLizard 发表于 2023-10-31 22:22:05

S1E26:指向指针的指针

本帖最后由 BaysideLizard 于 2023-11-14 22:23 编辑

#include <stdio.h>
//DNX写于2023年10月31日

int main()
{
    printf("指向指针的指针测试:\n");
    int num = 520;
    int *p = &num;//指针
    int **pp = &p;//指向指针的指针

    printf("num:%d\n",num);
    printf("*p:%d\n",*p);
    printf("**pp:%d\n",**pp);
    printf("&p:%p, pp:%p\n",&p,pp);
    printf("&num:%p, p:%p, *pp:%p\n",&num,p,*pp);
    putchar('\n');

    printf("指针数组和指向指针的指针测试:\n");
    char *CBooks={
      "《C程序设计语言》",
      "《C专家编程》",
      "《C和指针》",
      "《C陷阱与缺陷》",
      "《C Primer Plus》",
      "《带你学C带你飞》"};//指针数组
    char **ByFishC;//指向指针的指针
    char **XjyLoves;//指向指针的指针

    ByFishC = &CBooks;
    XjyLoves = &CBooks;
    XjyLoves = &CBooks;
    XjyLoves = &CBooks;
    XjyLoves = &CBooks;
    XjyLoves = &CBooks;
    printf("FishC出版的书:\n%s\n",*ByFishC);
    printf("小甲鱼喜欢的书:\n");
    for(int i = 0;i < 5;i++)
    {
      printf("%s\n",*XjyLoves);
    }
    putchar('\n');

    printf("指针和一维数组测试:\n");
    int array = {0,1,2,3,4,5,6,7,8,9};//一维数组
    int *ppp = array;//指针
    //array就是&array

    for(int i =0;i < 10;i++)
    {
      printf("%d\n",*(ppp + i));
    }
    putchar('\n');

    printf("数组指针和二维数组测试:\n");
    int arrayb = {
                {0,1,2,3},
                {4,5,6,7},
                {8,9,10,11}};//二维数组
    int (*pppp) = arrayb;//数组指针
    for(int i = 0;i < 3;i++)
    {
      for(int j =0;j < 4;j++)
      {
            printf("%-3d",*(*(pppp+i)+j));//%-3d左对齐占3个格
      }
      putchar('\n');
    }

    return 0;
}







运行结果:
指向指针的指针测试:
num:520
*p:520
**pp:520
&p:000000000061FDE0, pp:000000000061FDE0
&num:000000000061FDEC, p:000000000061FDEC, *pp:000000000061FDEC

指针数组和指向指针的指针测试:
FishC出版的书:
《带你学C带你飞》
小甲鱼喜欢的书:
《C程序设计语言》
《C专家编程》
《C和指针》
《C陷阱与缺陷》
《C Primer Plus》

指针和一维数组测试:
0
1
2
3
4
5
6
7
8
9

数组指针和二维数组测试:
0123
4567
8910 11

Process returned 0 (0x0)   execution time : 0.045 s
Press any key to continue.





在FishC学C的第十一天
加油!

岳明辉 发表于 2023-11-2 14:03:24

页: [1]
查看完整版本: S1E26:指向指针的指针