【C语言笔记】C语言初探——指针的理解和使用

 最近开始学习C语言。在高中就听说C语言是很推荐的一门计算机入门语言,以为它更加偏向于底层。如果已经学习过一门计算机语言,要再学习一门新的语言,最快的方式就是将两种语言的相同和不同之处进行对比。指针是Java中没有的概念,所以最近初学时总是晕晕乎乎。

 本篇总结了C语言中关于指针的一些基本概念和用法。
在这里插入图片描述

1.变量介绍

 在了解指针之前,先了解“变量”的实质。
 例如我们定义了int a,这时我们向计算机内存申请一个整型变量宽度的空间,命名为a。
 那我们再进行a = 1的操作,则是在刚才申请的地址中存入内容1。

2.指针是什么?

int * p;这到底是个什么东东?
 其实在生活中,我们无时无刻都在接触指针。比如我们去图书馆找书,你问图书管理员,图书管理员给了你一张纸条:二楼18号书架3层。她没有把书直接给你,而是告诉你书在哪。这就是指针。
 那么在C语言中,我们就很好理解了。如果我们想通过指针获得a的值,那么指针中存放的值就是变量a的地址。

3.指针和普通变量有什么不同嘛?

 int *p;表示p是一个指针,初学时我觉得指针是一个多么特别的东西。后来学习才发现,其实,它也只不过是一个变量而已,与上面说的a变量并没用本质的区别。只不过它存储的内容是一个地址。

4.怎么实现指针?

 那指针是怎么实现的呢,举一个最简单的例子。
int a = 1; //在内存中申请一个名为a的整型变量宽度的空间,空间存放数值1。
int *p ; // 在内存中申请一个名为p的指针变量的宽度的空间。
p = &a; //&a的意思是返回a变量的地址编号,我们在指针p的对应的空间里存放变量a的地址。
printf("%d",*p);  //*p得到的是p值所指的地址的内容(哈哈,是不是有点像绕口令)。

5.在实践中才有收获

int a = 10;
int * p;
p = &a;
*p = 20;
printf("%d",a);

 这段代码最后打印了a,那么a最后是多少呢?没错,既然* p得到的是a,那么改变*p与改变a的值效果是一样的。
 对了,有一点要注意,如果是这样的指针和变量

char a = 'm';
int *p;
p = &a;

 这样我们该怎么通过指针输出, printf("%d",*p)还是 printf("%c",*p)呢?
 其实都不行,初学时不知道,其实指针的类型是需要和指向的地址的内容类型匹配的。
我们需要声明一个char *p;才可以通过printf("%c",*p)成功打印。

写在最后

 这是最近学习指针了解到的关于指针的一些基础。这也是我C语言学习的开始。记录下来希望可以加深印象。
 关于指针更深刻的文章可以参考资料:C语言中的指针详解


千里崎岖不辞苦,

仗剑江湖为红颜

你可能感兴趣的:(C语言学习笔记,c语言)