与其说指针是一种工具,不如先说指针是一种数据类型。
-------------------------------------------------------------华丽的分割线-----------------------------------------------
指针是什么呢?指针是一种数据类型。
首先,我们先这样
int a; int *b;
a是一个int型变量,对吧?那类比一下,b是个int *型变量对吧?
我们换一种说法:b是一个int型指针 其中*是标识符
下面我们来看这个:
int *p1; int **********p2;
怎么样?怕不怕?
其实没什么可怕的,无论有几个"*"它都是一个变量!
那你就会问了,指针里面到底装着什么呢?我们继续来看这样一段代码:
1 #include <stdio.h> 2 3 int main() 4 { 5 int a = 100; 6 int *p; 7 p = &a; 8 printf("a的地址是:%d\t a的值是:%d\n", &a, a); 9 printf("指针p的地址是:%d\t p的值是:%d", &p, p); 10 return 0; 11 } 12
运行结果如下:
这样你可能还不够直观,不如我们画一下内存图吧!
那你可能会问了,指针有什么用呢?答:间接赋值
任何事物都有它存在的意义,间接赋值这四个字你可能没什么感觉,不就是:
int i = 20; int *p = &i; *p = 10;
是的,这么一看用法就是这么简单,但是你有没有想过,如果把指针用到字符串身上呢?(未完待续)