指针

在JAVA里的指针感觉有点--若隐若现,说它存在吧,也行,说它不存在吧,也可以--反正没怎么体现

然而在C中,指针是一个非常普遍的存在-----

先给个定义吧

指针,就是储存的变量的内存地址!!本质,是内存地址!

void main(){

  int i = 90;

  int *p = &i;

  printf("i的内存是%#x\n",p);

  printf("p的内存是%#x\n",&p);

   printf("p的内存指向的值是%d\n",*p);

   system("pause");

}

以上代码中,第一个输出的p,就是变量i的16进制内存地址,&p,就是p本身的16进制内存地址! *p,就是p的地址对应的值!固是输出90!  

其中的 int *p=&i;

这样就定义了一个p,p就是一级指针!

那有没有这种写法:

int p=&i;

没有! 这样写,编译都通不过,直接报错,所有要定义指针,必须写成 *p

当然,也可以写成

int* p=&i;  

就是把*靠近int还是靠近p--就是个无聊的写法而以-----

从这里可以看出,指针是有类型的,这,就是一个int类型的指针。

这里总结一下,int *p,这样定义,才是定义了一个指针p!   

这里面还有两个事

printf("i的内存是%#x\n",p);    其中的%#x指的是16进制!

在VS中,可以直接查看这个16进制字符对应的值是多少

方法是,调式--窗口--内存 ,就可以看到对应的值了,当然,你还要反键选一下16进制值

当改变一个指针p的*p时,就相当于重新赋值了结果,如

int i = 90;

int *p = &i;

*p = 200;

这就表示将i的值又变成了200!是的,是改变了i的值!!! 最后一行的 *p,指的就是实际的值!和定义的int *p是不一样的,关于这里,再作一下解释、

int *p,这是定义出一个p指针的必须的写法!这样写,才表示定义了一个int型的指针

当定义完成后,再出现 *p,是表示p指向的地址的对应的值!

所以这里,*p=200 ,就相当于,把i的值,又变成了200! 逻辑就是这样的--很通顺是不是--

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,667评论 3 44
  • 1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧...
    金巴多阅读 2,021评论 0 9
  • 前言:指针是 C语言一个重要概念,也是C 语言的一个重要特色。使程序简洁、紧凑、高效。指针乃是C之精华。 数据在内...
    潇湘候晨雪阅读 875评论 0 0
  • void* 类型指针:通用变体类型指针;可以不经转换,赋给其他指针,函数指针除外;malloc返回的就是void*...
    冰吉凌阅读 3,553评论 0 18
  • !!!注意:因为简书的显示格式缘故,所以“ * ”显示会出现问题,可能有些星号由于疏忽未改动格式,造成没有显示,请...
    Eric_Hunter阅读 1,272评论 0 0

友情链接更多精彩内容