0%

C语言 指针初探

C语言 指针初探

指针是C语言中最有趣的概念,简洁、优美、快速、复杂、难懂,所以有一本书叫做《C和指针》,足见其强悍之处。

C语言指针一般设计到动态内存分配等高级概念,要想成为一个高手,必须要掌握指针,本节,只需要了解一个概念即可。

即指针是一个变量,指针的值是另外一个变量的地址,可以认为指针指向你这个值的时候,代表的是你家的地址。

看一个例子如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*beginner/pointer/pointer1.c*/
#include <stdio.h>

int main()
{
char a = 'a';
int b = 1;
float c = 3.1415926;
double d = 3.1415926;

printf("The address of a is %p\n", &a);
printf("The address of b is %p\n", &b);
printf("The address of c is %p\n", &c);
printf("The address of d is %p\n", &d);

return 0;
}
1
2
3
4
5
$ ./pointer1
The address of a is 0x7ffee3e5272b
The address of b is 0x7ffee3e52724
The address of c is 0x7ffee3e52720
The address of d is 0x7ffee3e52718

可以看到变量没有规则,但是出来的地址是有顺序的,按照一定的规则增加或减少。

指针规则

看一下如何使用指针,规则如下:

1
type * var-name;
  • type:是指针的基本类型
  • var-name:为指针的名字

其中type可以是我们前面说过的所有变量类型,比如intdoublefloatchar等。

比如:

1
2
3
4
int *pi;
float *pf;
double *pd;
char *pc;
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道