对C语言中指针的入门理解
通过一个例子引出对指针的概念理解
1,例子
#include<stdio.h>
int main(void)
{
int xiaozhang = ; //小张的身高
int xiaoli = ; //小李的身高
int xiaowang = ; //小王的身高 int *xiaolin,*xiaohong; xiaolin = &xiaozhang; //小玲指向小张
xiaohong = &xiaowang; //小红指向小王 printf("小玲喜欢的人的身高:%d\n",*xiaolin);
printf("小红喜欢的人的身高:%d\n",*xiaohong); xiaohong = &xiaoli; //小红指向小李(移情别恋) *xiaohong = ; //将小红指向的对象赋为180 == 修改小红喜欢的人的身高 printf("\n");
printf("小张的身高:%d\n",xiaozhang);
printf("小李的身高:%d\n",xiaoli);
printf("小王的身高:%d\n",xiaowang);
printf("小玲喜欢的人的身高:%d\n",*xiaolin);
printf("小红喜欢的人的身高:%d",*xiaohong); return ;
}

2,理解
当指针p的值为对象x的地址时,我们一般会说“p指向x”。
通过以上例子,我们在这里可以将“指向”理解成“喜欢”,因此,指针p的值为对象x的地址我们可以理解成“p喜欢x”。
接着进行“xiaohong = &xiaoli”的复制,我们就可以得出“小红喜欢小李”。

xiaolin、xiaohong的数据类型是“指向int型变量的指针型”
xiaolin = &xiaozhang;
xiaohong = &xiaowang;
从以上赋值语句也可以发现,&xiaozhang、&xiaowang的类型也是“指向int型变量的指针型”。
所以说取地址符(&)不光可以理解为取址运算符,也可以理解为生成指针,表达式&xiaozhang是指向xiaozhang的指针,其值为xiaozhang的地址。
指针运算符
在进行显示的地方,就要用到叫作指针运算符的单目运算符*。
将指针运算符*写于指针之前,就可以显示该指针指向的对象内容。

因此,*xiaolin就等于“xiaolin指向的对象”,*xiaolin就是xiaozhang。*xiaolin是xiaozhang的别名。
所以当p指向x时,*p就是x的别名。
指针运算符的赋值
当指向 xiaoli 的指针赋给xiaohong,使 xiaohong 指向 xiaoli,这样一来就变成“xiaohong 喜欢 xiaoli”
小红从小王移情别恋给小李了,啧啧...
所以,如果将指向其他对象的指针赋给指针变量,那么该指针变量就会指向这些对象。
因此,上例的程序运行结果如下
xiaolin = &xiaozhang;
xiaohong = &xiaowang; printf("小玲喜欢的人的身高:%d\n",*xiaolin);
printf("小红喜欢的人的身高:%d\n",*xiaohong); xiaohong = &xiaoli; //int 175 *xiaohong = ; //修改小李的身高,从175变为180 printf("\n");
printf("小张的身高:%d\n",xiaozhang);
printf("小李的身高:%d\n",xiaoli);
printf("小王的身高:%d\n",xiaowang);
printf("小玲喜欢的人的身高:%d\n",*xiaolin);
printf("小红喜欢的人的身高:%d",*xiaohong); //输出180
对C语言中指针的入门理解的更多相关文章
- 这样子来理解C语言中指针的指针
友情提示:阅读本文前,请先参考我的之前的文章<从四个属性的角度来理解C语言的指针也许会更好理解>,若已阅读,请继续往下看. 我从4个属性的角度来总结了C语言中的指针概念.对于C语言的一个指 ...
- C语言中指针和数组
C语言数组与指针的那些事儿 在C语言中,要说到哪一部分最难搞,首当其冲就是指针,指针永远是个让人又爱又恨的东西,用好了可以事半功倍,用不好,就会有改不完的bug和通不完的宵.但是程序员一般都有一种迷之 ...
- C语言中指针占据内存空间问题
以前一直有个疑问,指向不同类型的指针到底占用的内存空间是多大呢? 这个问题我多次问过老师,老师的答案是"指向不同类型的指针占据的内存空间大小不同",我一直很之一这个答案,今天我就做 ...
- 理解C语言中指针的声明以及复杂声明的语法
昨天刚把<C程序设计语言>中"指针与数组"章节读完,最终把心中的疑惑彻底解开了.如今记录下我对指针声明的理解.顺便说下怎样在C语言中创建复杂声明以及读懂复杂声明. 本文 ...
- C语言一维指针的深入理解
指针是C语言中广泛使用的一种数据类型.运用指针编程是C语言最主要的风格之一. 利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串:并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指 ...
- C语言中指针*p[N], (*P)[N],及**p的区别
在C语言编程中指针经常困扰着我们,但是若能灵活运用指针的话,将会使得我们编程变得更加轻松与高效.这里讲下*p[N], (*P)[N],及**p的区别,这也是之前经常困扰我的地方. 这三者的定义分别为: ...
- C语言中指针和多维数组
指针和多维数组 数组名是特殊的指针 数组是一个特殊的指针,多维数组也是更为复杂的数组,它们的关系是什么样的呢? 我们通过一个简单的例子来比较形象的了解指针和多维数组: int a[2][3]; 这是一 ...
- 编程基础-c语言中指针、sizeof用法总结
1.指针 学习 C 语言的指针既简单又有趣.通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的.所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的. ...
- c语言中指针和多维数组的理解
1.复习指针和数组之间的特殊关系:不带方括号的数组名是一个指针,指向该数组的第一个元素. 2.多维数组: ][];//声明一个二维数组作为举例 a.理解方式1:可以将数组看成行和列构成,即理解成2行4 ...
随机推荐
- Android 自定义Dialog 去除阴影
自定义Dialog中添加下列代码: window.clearFlags( WindowManager.LayoutParams.FLAG_DIM_BEHIND);
- SeekBar: 修改SeekBar中进度条的高度
SeekBar中有两个很特别的属性需要留意下: 1.android:maxHeight和android:minHeight .前者是用来指定进度条最大高度的(此高度并非SeekBar整个控件的高度), ...
- 无法加载 DLL“ParkCOM.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 终结者
C#调用利用C++写的dll 常遇到的情况是无法加载DLL"***.dll":找不到指定的模块(异常来自HRESULT:0x8007007E)终极解决方法如下: 1.产生原因 可能 ...
- burpsuite扩展集成sqlmap插件
通常我们在使用sqlmap测试SQL注入问题的时候会先使用burpsuite来抓包,然后交给sqlmap进行扫描,此操作略显繁琐. 为了避免这种繁琐的重复操作可以将sqlmap以插件的方式集成到bur ...
- DLL封装Interface(接口)(D2007+win764位)
相关资料: http://blog.csdn.net/liangpei2008/article/details/5394911 结果注意: 1.函数的传参方向必须一至. DLL实例代码: ZJQInt ...
- WPF学习笔记(1)——image控件图片不显示的问题
说明(2017-6-7 16:08:35): 1. 本来想用winform的,用winform就没这么多破事了. 2. 不过项目要用WPF,拉出一个mediaelement控件,视频正常显示. 3. ...
- Java Web项目部署时 “Exploded Archive”模式部署时无效
在myeclipse中部署项目时,当Deploy type为Exploded Archive(deveplopment mode)时,finish按钮为灰色,无法部署的解决方法: 1.project上 ...
- jQuery弹性展开收缩菜单插件gooey.js
分享一款基于jQuery弹性展开收缩菜单插件gooey.js.这是一款基于gooey.js插件实现的弹性菜单特效代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <hea ...
- 自定义kafka Sink
package my.bigdata; /** * Created by lq on 2017/8/22. */ import java.io.File; import java.io.FileInp ...
- composer概念学习
composer的中文文档地址 Composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. Composer 不是一个包管 ...