c语言指针汇总

Posted ben-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\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语言程序设计(第三版)》,指针是一个地址,而指针变量是存放地址的变量。“指针”和“指针变量”是不同的概念。

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

以上是关于c语言指针汇总的主要内容,如果未能解决你的问题,请参考以下文章

C语言面试题大汇总

梦开始的地方 —— C语言指针进阶

C语言九十六之实现经典的字符串反转(通过指针或下标操作)

C 语言博客目录

关于C语言指针的问题

C/C++C语言复制字符串及复制函数汇总(strcpy()/memcpy()/strncpy()/memmove())