本章节我们学习C语言中一个非常重要的概念 指针。在之前的章节,我们已经接触过指针这个概念了,比如scanf()中的地址列表,这就是指针。所以,用一句话总结 指针是什么呢?指针就是地址!
指针:就是变量的内存地址。 指针变量就是存放内存地址的变量。(存放指针的变量)
从以上的定义我们可以知道,首先指针是一个值,这个值值指的是内存地址。而指针变量,和我们之前学过的int型、char型等变量类似,不同的点在于,指针变量存储的是内存地址(指针),int型变量存储的是整型数据,char型变量存储的是字符型数据。
接下来我们用图示的形式来解释一下 指针:

如图所示,int型变量i、j、k 大家肯定已经非常熟悉了。这里面的内存地址3020处存储的指针型变量i_pointe,上面提过,指针存储的是内存地址。i_pointer里存储的2000是一个内存地址,即变量i的地址。注意与变量k做区别。
我们知道,申明一个变量需要指出这个变量的数据类型,比如int i;和char i; 同样,在声明指针变量时,也要明确这个指针变量里存储的是哪类型变量的地址。 申明格式: 数据类型 * 指针变量名称;
int * i_pointer;// i_porinter 是指向 int 型变量的指针
char * ch_pointer;// ch_porinter 是指向 char 型变量的指针
我们记得我们在scanf()函数中提到过的取地址符&。 指针变量&i的值是变量i在内存中的地址,指针变量i_pointer的值也是变量i在内存中的地址,所以:
int * i_pointer;
i_pointer == &i;
指针变量存储的是内存地址,那么给指针变量赋一个内存地址型的值即可
#include <stdio.h>
int main(){
int i = 5;//定义整型变量i
char ch = 'A';//定义字符型变量ch
int * i_pointer;//定义整型指针变量i_pointer
char * ch_pointer;//定义字符型指针变量ch_pointer
i_pointer = &i;//将i的地址赋值给i_pointer
ch_pointer = &ch;//将ch的地址赋值给ch_pointer
printf("i的值为:%d\n", i);
printf("i的地址为:%p\n", i_pointer);//输出i_pointer的地址
printf("i的值为:%d\n", &i);
printf("ch的值为:%c\n", ch);
printf("ch的地址为:%p\n", ch_pointer);
printf("ch的值为:%p\n", &ch);
return 0;
}输出结果

我如果想给变量i赋值,内存地址为2000这个地方存储数值30,可以用两种做法:
int i;
int i_pointer;
i_pointer = &i;
i = 30;
*i_pointer = 30;// *i_pointer 等价于 i;意气风发,漫卷疏狂 学习是成长的阶梯,每一次`的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。 如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。 您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力! 愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步