• c语言指针汇总


    1.指向单个变量的指针;

    1 int a = 5;
    2 int* p = &a;
    3 printf("%d", *p);

    2.数组的指针

    (1)一维数组的指针

    1 int a[5] = { 1,2,3,4,5 };
    2 int *p;
    3 p = a;
    4 printf("%d
    ", a[1]);
    5 printf("%d
    ", *(p + 1));
    6 printf("%d", p[1]);

    (2)二维数组的指针

      (1)列指针

    1 int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
    2 int* p;
    3 //p = &a[0][0];
    4 //p = a[0];
    5 p = *a;
    6 printf("%d
    ", *(p + 4 * 2 + 3));  //a[i][j] = *(p + i * n + j);    //n数组的列数
    7 printf("%d", a[2][3]);

      (2)行指针 (指向数组的指针)

    1 int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
    2 int(*p)[4];
    3 p = a;
    4 printf("%d
    ", a[2][3]);
    5 printf("%d", *(*(p + 2) + 3));

    3.指向函数的指针

     1 int main()
     2 {
     3     int func(int a);
     4     int (*p)(int a);
     5     int a = 5;
     6     p = func;
     7     (*p)(a);  //调用
     8     return 1;
     9 }
    10 int func(int a)
    11 {
    12     printf("%d", a);
    13     return 1;
    14 }

    4.指向指针的指针(有时候在想前面的*是不是可以无限写下去……)

    1 int a = 5;
    2 int* p1, ** p2, *** p3;
    3 p1 = &a;
    4 p2 = &p1;
    5 p3 = &p2;
    6 printf("%d", ***p3);

    5.指针数组

    1 char* p[3] = { "hello", " ", "world" };
    2 printf("%s", *(p + 2));

    6.返回指针值的函数

     1 int main()
     2 {
     3     char* myStrcat(char* p1, char* p2);
     4     char str[100] = "hello ";
     5     char* mes = "world";
     6     printf("%s
    ", myStrcat(str, mes));
     7     return 1;
     8 }
     9 char* myStrcat(char* p1, char* p2)
    10 {
    11     char* start = p1;
    12     while (*p1 != '')
    13     {
    14         p1++;
    15     }
    16     while (*p1++ = *p2++)
    17     {}
    18     return start;
    19 }

    7.文件指针

      FILE *fp;

    这里用词不太严谨。根据《c语言程序设计(第三版)》,指针是一个地址,而指针变量是存放地址的变量。“指针”和“指针变量”是不同的概念。

    然而大多数情况下,都将“指针变量”直接称为“指针”。这里除了第二点,第六点外,”指针“都是指”指针变量“。

  • 相关阅读:
    favourite programming quotes
    a fast algorithm to compute the area of a polygon
    customize your own memory allocator (2)
    一道概率算法
    study on source code of Tcmalloc
    智力题2
    how does malloc/free work?
    Windows PowerShell系列课程(视频课程讲师:李大川)
    跟我一起学Visual Studio 2008系列课程(视频课程讲师:徐长龙)
    C# 3.0 锐利体验系列课程(视频课程讲师:李建忠)
  • 原文地址:https://www.cnblogs.com/ben-/p/11295530.html
Copyright © 2020-2023  润新知