希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~
阅读指南:
开篇说明
本章节我们学习C语言中一个非常重要的概念 指针。在之前的章节,我们已经接触过指针这个概念了,比如scanf()中的地址列表,这就是指针。所以,用一句话总结 指针是什么呢?指针就是地址!
1、指针的定义
指针:就是变量的内存地址。
指针变量就是存放内存地址的变量。(存放指针的变量)
从以上的定义我们可以知道,首先指针是一个值,这个值值指的是内存地址。而指针变量,和我们之前学过的int型、char型等变量类似,不同的点在于,指针变量存储的是内存地址(指针),int型变量存储的是整型数据,char型变量存储的是字符型数据。
接下来我们用图示的形式来解释一下 指针:
如图所示,int型变量i、j、k 大家肯定已经非常熟悉了。这里面的内存地址3020处存储的指针型变量i_pointe,上面提过,指针存储的是内存地址。i_pointer里存储的2000是一个内存地址,即变量i的地址。注意与变量k做区别。
2、申明指针变量
我们知道,申明一个变量需要指出这个变量的数据类型,比如int i;和char i;
同样,在声明指针变量时,也要明确这个指针变量里存储的是哪类型变量的地址。
申明格式:
数据类型 * 指针变量名称;
- 申明存储int型变量地址的指针变量
int * i_pointer;// i_porinter 是指向 int 型变量的指针
- 申明存储char型变量地址的指针变量
char * ch_pointer;// ch_porinter 是指向 char 型变量的指针
3、取地址符 &
我们记得我们在scanf()函数中提到过的取地址符&。
指针变量&i的值是变量i在内存中的地址,指针变量i_pointer的值也是变量i在内存中的地址,所以:
int * i_pointer;
i_pointer == &i;
4、为指针变量赋值
指针变量存储的是内存地址,那么给指针变量赋一个内存地址型的值即可
#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;
}
输出结果
5、间接运算符
我如果想给变量i赋值,内存地址为2000这个地方存储数值30,可以用两种做法:
- 变量i等于3;直接给变量i赋值。
- 内存为2000的这个地址里存储的数值为30;通过地址赋值。
第二种方式如何用C语言表示呢?
int i; int i_pointer; i_pointer = &i; i = 30; *i_pointer = 30;// *i_pointer 等价于 i;
- 我们看到,在i_pointer的前面有一个星号“*”,这个星号叫间接运算符
第二种方法的目的是,通过指针变量i_pointer找到i的地址,然后再将值放入地址中,其中 *i_pointer就是这个效果。
当计算机看到i_pointer后,知道这是一个指针变量,存储的是一个内存地址,之后看到 i_pointer前面的星号 * ,会顺着 i_pointer
这个指针变量中存储的地址(指针)到对应位置,然后将值30放入。 - 从另一种角度看,int型变量i等价于指针变量 i_pointer.他俩存在等价关系。
- *即i等价于 i_pointer
标签:ch,变量,int,C语言,地址,新手,pointer,指针 From: https://blog.csdn.net/2302_79751907/article/details/141070568意气风发,漫卷疏狂
学习是成长的阶梯,每一次`的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!
愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
我是意疏 下次见!