c語言指標彙總

奔_gis發表於2019-08-03

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\n", a[1]);
5 printf("%d\n", *(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\n", *(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\n", 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\n", myStrcat(str, mes));
 7     return 1;
 8 }
 9 char* myStrcat(char* p1, char* p2)
10 {
11     char* start = p1;
12     while (*p1 != '\0')
13     {
14         p1++;
15     }
16     while (*p1++ = *p2++)
17     {}
18     return start;
19 }

7.檔案指標

  FILE *fp;

這裡用詞不太嚴謹。根據《c語言程式設計(第三版)》,指標是一個地址,而指標變數是存放地址的變數。“指標”和“指標變數”是不同的概念。

然而大多數情況下,都將“指標變數”直接稱為“指標”。這裡除了第二點,第六點外,”指標“都是指”指標變數“。

相關文章