鼠标指针问题的鼠标指针问题的相关问题

5447人阅读
C/C++(23)
指针 + 1 并不是指针代表的地址值 + 1.
指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。而不是在原地址基础上加1。至于真实的地址加了多少,要看原来指针指向的数据类型是什么。
char a = 'a';char *p = &a;cout&&(void*)p&&" "&&(void*)(p+1)&&
输出:12FF34
p指向的是一个字符,p+1就是移动一个字符大小,一个字符就是一个字节,所以p +1 代表的地址就比 p 代表的地址大1。
int i = 1;int *p = &i;cout&&(void*)p&&" "&&(void*)(p+1)&&
输出:12FF34
p指向的是一个整型,p+1就是移动一个整型大小,即移动4个字节,所以p+1代表的地址比p代表的地址大4.
这些操作是由编译器来完成的。所以,指针必须指向某个类型,这样编译器才能知道指针每次加1时真正内存的步长是多少.
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:98158次
积分:1421
积分:1421
排名:千里之外
原创:43篇
转载:14篇
(2)(1)(1)(6)(2)(3)(1)(3)(6)(5)(4)(23)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'为什么说指针是 C 语言的精髓? - 知乎2589被浏览417612分享邀请回答37523 条评论分享收藏感谢收起51784 条评论分享收藏感谢收起查看更多回答10 个回答被折叠()fread、fseek文件指针以及位置指针的问题
需要再研究函数实现源码再做确认。
以下内容是转自:http://blog.csdn.net/zhangzhanwenzzzzzz/article/details/7579582
原型:int fseek(FILE
*stream, long offset, int fromwhere);
功能:重定位流(数据流/文件)上的文件内部位置指针
注意:不是定位文件指针(文件指针是 FILE *
这样的),文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头(SEEK_SET)0,当前位置(SEEK_CUR)1,文件尾(SEEK_END)2)为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(offset超过文件自身大小),则不改变stream指向的位置。
返回值:成功,返回0,失败返回-1,并设置errno的值,可以用perror()函数输出错误。
第一个参数stream为文件指针
  第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
  第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、
SEEK_END 或 SEEK_SET
  SEEK_SET:
  SEEK_CUR:
  SEEK_END:
  其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.
  简言之:
  fseek(fp,100L,0);把文件内部指针移动到离文件开头100字节处;
  fseek(fp,100L,1);把文件内部指针移动到离文件当前位置100字节处;
  fseek(fp,-100L,2);把文件内部指针退回到离文件结尾100字节处。
fread的功 能:
从一个流中读数据
fread 在使用过程中,首先由
FILE 确定一个文件指针 fp,fp 通过 fopen 将对象确定,fread此时对文件的操作是
文件内部位置指针移动一个字节再读取一个字节
函数原型: size_t fread( void
*&buffer&,
size_t&size&,
size_t&count&, FILE
*&stream&);
1.用于接收数据的地址(指针)(buffer&)
2.单个元素的大小(size)
:单位是字节而不是位,例如读取一个整型数就是2个字节 
3.元素个数(count&)  
4.提供数据的文件指针(stream) 
(1)成功时返回实际读入的元素个数
(2)若文件达到末尾,则返回0
(3)出错时,返回-1
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。如何理解指向指针的指针? - 文章 - 伯乐在线
& 如何理解指向指针的指针?
问题:如何理解指向指针的指针?
我在一篇教程中看到下面这段,它描述指向指针的指针是如何运作的。
引用文章相关段落如下:
int i = 5, j = 6, k = 7;
int *ip1 = &i, *ip2 = &j;
int i = 5, j = 6, k = 7;int *ip1 = &i, *ip2 = &j;
现在我们可以这么写:
int **ipp = &ip1;
int **ipp = &ip1;
那么现在指针 ipp 指向了 ip1,ip1 指向了 i。*ipp 就是 ip1,**ipp 就是 i,或者说是 5。我们可以用我们熟悉的盒子箭头图来描述,像这样:
如果我们接着这么写:
*ipp = ip2;
*ipp = ip2;
我们就改变了 ipp 指向的那个指针(也就是 ip1),现在它指向 ip2 所指的地方。也就是说(ip1)现在它指向了 j:
我的疑问是:为什么在第二幅图里,ipp 还是指向 ip1 而不是 ip2?
最佳答案:
让我们暂时忘掉那些关于指针的各种类比。指针实际上存放的是内存的地址。
& 符号的意思是取地址,也就是返回一个对象在内存中的地址。
* 符号的意思是取得一个指针所指向的对象。 也就是如果一个指针保存着一个内存地址,那么它就返回在那个地址的对象。
所以当你这么写时 *ipp = ip2,实际上是把 ipp 存的地址所对应的对象,也就是 ip1 取到,然后把 ip2 存的值赋值给 ip1,也就是 j 的地址。
简单点就是:
* :取值。
关于作者:
可能感兴趣的话题
最后一张图是错的,ipp应该指向ip2
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线}

我要回帖

更多关于 鼠标指针问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信