精华内容
下载资源
问答
  • C语言的指针移动怎么理解

    千次阅读 2019-02-18 20:04:00
    刚学习C语言的朋友,对指针移动”可能不太理解。举个例子,例如下述代码: int a = 1; 那么大家都知道a + 1肯定就是2了。如果是指针呢?例如: int *p = 1; p + 1还是2吗? 为了说明问题,请看以下代码: #include...

    版权声明:本文为作者原创文章,转载时请注明文章来源,否则视为侵权,并按法律程序处理!

    刚学习C语言的朋友,对指针“移动”可能不太理解。举个例子,例如下述代码:

    int a = 1;

    那么大家都知道a + 1肯定就是2了。如果是指针呢?例如:

    int *p = 1;

    p + 1还是2吗?

    为了说明问题,请看以下代码:

    #include "stdio.h"  
    #include "stdlib.h"  
      
    int main()  
    {  
        int index = 0;  
        int number[3] = {1, 2, 3}; //定义一个整型数组  
        int *p = &number[0]; //指针p的初始值是数组第一个元素的地址  
        printf("p的值是 %x\n", p); //输出p的值,也就是数组第一个元素的地址  
      
        printf("本机int类型占用 %d 个字节\n", sizeof(int)); //得知本机上int类型占用多少字节  
      
        for(index = 0; index < 3; index++)  
        {  
            printf("第 %d 个元素的地址是 %x\n", index + 1, &number[index]);  
        }//输出数组中每一个元素的地址  
      
        for(index = 0; index < 3; index++)  
        {  
            printf("p加 %d 的值是 %x\n", index, p + index);  
        }//输出指针p+1, p+2, p+3的值  
          
        return 0;  
    }    
    

    程序很简单,目的就是为了说明指针p自己加上1、2、3分别得到什么值。运行结果如下:


    4232298-e6b0aba723d519b0.png
    image.png

    指针p的初始值就是数组第一个元素的地址,为“12ff70”。那么从p + 1开始,并不是简单的12ff70 + 1 = 12ff71,而是12ff70 + 4 = 12ff74。p + 2也不是12ff70 + 2 = 12ff72,而是12ff70 + 4 + 4 =12ff78。所以指针的增加运算与本文开头的整型变量a的增加运算还不一样,这也是许多初学者经常会糊涂的一个地方。

    指针p +n其实计算的是p加上n*类型占用字节数。本文指针p是int类型,本机中,使用sizeof计算出的int占用的字节数是4。因此,p + 1其实就是p + 1 * 4个字节,p + 2其实就是p + 2 * 4个字节。关于每种类型在本机上占用的字节数网上有很多介绍,读者可以自行搜索下。

    可能也有的朋友说,这个我懂啊,p + 1其实就是往前移动了4个字节啊!但是太自大也不好,太自大的结果就是你心里知道p + 1是跨越了4个字节的地址,但是手一抖,写成了p + 4,你说这是笔误呢还是笔误呢?

    展开全文
  • 一、普通文件的读写 打开文件的步骤:打开 --> 操作 --> 关闭 ...-默认从文件指针所在位置开始写入 w: -只能写 -会清空文件之前的内容 -文件不存在,不会报错,会创建新的文件并写入 w...

    一、普通文件的读写

    打开文件的步骤:打开 --> 操作 --> 关闭

    注意:打开后关闭的原因是因为这样不会浪费文字描述符

    文件读写的方式:

    • r:(默认)
      -只能读,不能写
      -读取的文件不存在,会报错

    • r+:
      -可读写
      -文件不存在,报错
      -默认从文件指针所在位置开始写入

    • w:
      -只能写
      -会清空文件之前的内容
      -文件不存在,不会报错,会创建新的文件并写入

    • w+:
      -可读写
      -会清空文件内容
      -文件不存在,不会报错,会创建新的文件并写入

    • a:
      -只能写
      -文件不存在,不报错,会创建新的文件
      -不会清空文件内容

    • a+:
      -可读写
      -文件不存在,不报错
      -不会清空文件内容

    二、具体实验举例

    1. 打开关闭文件的实验要求如下:

    (1) 题目要求:
    举例说明如何让打开关闭文件,同时将文件中的内容输出
    代码及测试结果如下:
    <1> 首先将/etc/passwd备份到/tm/passwd下,如下所示:
    在这里插入图片描述
    <2> 在python的IDE中写入以下代码:
    在这里插入图片描述
    (2) 题目要求:
    显示文件是否可读和可写
    代码及测试结果如下:
    结果显示只可读不可写
    在这里插入图片描述

    2、关于r的实验

    (1) 题目要求:
    如果文件存在时,是否能进行读写,如果能请举例说明
    代码及测试结果如下:
    在这里插入图片描述
    修改文件的权限,再次测试发现还是不能进行写操作,如下所示:
    在这里插入图片描述
    在这里插入图片描述
    因此,当文件存在时只能进行读操作,而不能进行写操作。

    (2) 题目要求:
    当文件不存在时,是否能对其进行读写操作,请举例说明
    代码及示例结果如下:
    在这里插入图片描述
    总结: 文件只能读不能写 ,当读取的文件不存在,会报错

    3、关于r+的实验

    (1) 题目要求:
    当文件存在时,是否能对其进行读写操作,请举例说明
    代码及运行结果:
    在python中写入下面的代码:
    在这里插入图片描述
    在这里插入图片描述
    注意: 在上面的结果中我们可以发现,文件既能读也能写,但写操作之后无法读出文件的内容,这是因为文件的指针移动了,但我们可以通过命令行查看上面写入的内容,如下所示:
    在这里插入图片描述
    为了解决这一问题,我们可以通过查看和移动指针的位置来解决,如下所示:
    在这里插入图片描述
    在这里插入图片描述
    因为上面值时查看了指针的位置并没有移动位值,所以当我们再次进行读操作时,上面写入的内容就会出现,如下所示:
    在这里插入图片描述
    在这里插入图片描述
    总结: 当文件存在时,可读写,默认从文件指针所在位置开始写入;文件不存在时,报错

    4、关于w的实验

    (1) 题目要求:
    举例说明当文件存在时,只能写操作,况且写会清空文件的内容
    代码及运行结果如下:
    在这里插入图片描述
    文件的内容已清空,只有上面写入的,如下所示:
    在这里插入图片描述
    (2) 题目要求:
    当文件不存在时,是否会创建新的文件并写入,请举例说明
    代码及运行结果如下:
    在这里插入图片描述
    在这里插入图片描述
    总结: 当文件存在时,只能写不能读,并且写会清空文件之前的内容;当文件不存在,不会报错,会创建新的文件并写入

    5、关于w+的实验

    (1) 题目要求:
    举例说明当文件存在时,不仅能读也能写操作,并且写会清空文件的内容
    代码及运行结果:
    在这里插入图片描述
    在这里插入图片描述
    (2) 题目要求:
    举例说明当文件不存在时,是否会创建新的文件并写入,请举例说明
    代码及运行结果:
    在这里插入图片描述
    在这里插入图片描述

    6、关于a的实验

    (1) 题目要求:
    举例说明当文件存在时,只能进行写不能读,并且写操作不会清空文件内容
    代码及运行结果:
    在这里插入图片描述
    在这里插入图片描述
    (2) 题目要求:
    举例说明当文件不存在时,不会报错,会创建新的文件
    代码及运行结果:
    在这里插入图片描述
    在这里插入图片描述

    7、关于a+的实验

    (1) 题目要求:
    举例说明当文件不存在时,不仅能进行读操作也能进行写操作,并且写操作不会清空文件内容
    代码及运行结果如下:
    在这里插入图片描述
    在这里插入图片描述
    (2) 题目要求:
    举例说明当文件不存在时,不会报错,会创建新的文件
    代码及运行结果:
    在这里插入图片描述
    在这里插入图片描述

    三、文件的读取

    • readlines():读取文件内容,返回一个列表,列表里的元素分别为文件每行的内容

    首先在/tmp下编写一个文件,如下所示:
    在这里插入图片描述
    读取文件的全部内容,如下所示:
    在这里插入图片描述
    读取文件的第一行,如下所示:
    在这里插入图片描述
    以列表的形式读取文件,如下所示:
    在这里插入图片描述
    读取文件中的字节,如下所示:
    在这里插入图片描述
    读取文件并且以’ '结尾的行,如下所示:
    在这里插入图片描述
    在列表中以循环的形式读取文件,如下所示:
    在这里插入图片描述
    以匿名函数的形式读取文件,并将文件放入到列表中,如下所示:
    在这里插入图片描述

    四、seek方法,移动指针

    • seek第一个参数是偏移量:>0,代表向右移动,<0,代表向左移动

    • seek第二个参数是:

    • 0:移动指针到文件开头

    • 1:不移动指针

    • 2:移动指针到末尾

    代码及运行结果如下:
    在这里插入图片描述

    展开全文
  • 将指令指针移动到选定行的 Xcode 插件。 安装: 通过安装 或者克隆并构建项目,然后重新启动 Xcode。 卸载: 通过卸载 或者运行rm -r ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/...
  • 将光标移动到此 ResultSet 对象的给定行编号。 boolean relative(int rows) 按相对行数(或正或负)移动光标。 boolean first() 将光标移动到此 ResultSet 对象的第一行。 boolean last() 将光标移动到此 ...
    返回类型方法说明
    booleanabsolute(int row)将光标移动到此 ResultSet 对象的给定行编号。
    booleanrelative(int rows)按相对行数(或正或负)移动光标。
    booleanfirst()将光标移动到此 ResultSet 对象的第一行。
    booleanlast()将光标移动到此 ResultSet 对象的最后一行。
    booleannext()将光标从当前位置下移一行。
    booleanprevious()将光标从当前位置上移一行。
    下面为next()、previous()循环提取数据做准备
    voidafterLast()将光标移动到此 ResultSet 对象的末尾,正好位于最后一行之后。
    voidbeforeFirst()将光标移动到此 ResultSet 对象的开头,正好位于第一行之前。
    booleanisFirst()获取光标是否位于此 ResultSet 对象的第一行。
    booleanisLast()获取光标是否位于此 ResultSet 对象的最后一行。
    intgetRow()获取当前行编号。
    展开全文
  • 鼠标指针移动出现停顿的原因.docx
  • 鼠标指针移动时出现停顿卡怎么办.docx
  • 鼠标指针移动时出现停顿卡的原因.docx
  • 解决鼠标指针移动时出现停顿卡的原因.docx
  • 电信设备-用于处理指针移动的系统和方法.zip
  • 电信设备-一种基于压力传感器实现鼠标指针移动的鼠标.zip
  • Git分支指针移动到不同的提交

    千次阅读 2017-11-06 17:17:20
    Git分支指针移动到不同的提交 如果你只是想将分支移动到另一个提交,则这里方法可能不是最简单的选项。branch -f 详细描述的是一个简单的命令,所以看看他的答案。 你可以为任意的裁判做它。 这就是移动...

    Git分支指针移动到不同的提交


    如果你只是想将分支移动到另一个提交,则这里方法可能不是最简单的选项。branch -f 详细描述的是一个简单的命令,所以看看他的答案。

    你可以为任意的裁判做它。 这就是移动分支指针的方法:

    git update-ref -m"reset: Reset <branch> to <new commit>" refs/heads/<branch> <commit>

    一般形式:

    git update-ref -m"reset: Reset <branch> to <new commit>" <ref> <commit>

    你可以挑选nits有关reflog消息如果你喜欢- 我相信不同从 reset --hardbranch -f的那些是有的,而且也不完全哪一个都可以。


    展开全文
  • #include #include #include //ftell 获取文件位置 //fseek 把文件指针移动到指定位置 int main(int argc,char *argv[]) { FILE *fp; if(argc !=2) { printf("usage %s <filenam
  • 指针移动

    千次阅读 2019-05-16 21:17:29
    那么如何使指针变量指向一维数组的其他元素呢?比如如何使指针变量指向 a[3],同样可以写成p = &a[3],但是除了这种方法之外,C语言规定:如果指针变量p已经指向一维数组的第一个元素,那么p+1就表示指向该数组的...
  • 在Windows上使用ACE::truncate函数时报错:“试图将文件指针移动到文件开头之前” 代码如下: // 指定文件大小 ACE_OFF_T offset = 3 * 1024 * 1024 * 1024; if (ACE_OS::truncate("Tick.data", offset) !=...
  • sketch 跟随鼠标指针移动的特效
  • 当数据需要进栈时候,系统需要知道数据放在哪个位置,此时指针指向的是一个空单元,所以数据先入栈,然后指针移动。 第二种情况:当栈顶指针指向的是一个实际数据。当栈不为空时,当数据想出栈,此时指针指向的...
  • fscanf的指针移动

    千次阅读 2014-03-04 19:46:57
    今天在用fscanf读取文件中的浮点数,结果一会儿对,一会儿错,找了一下午,才发现自己忽略了fscanf之后,指针移动问题。 一直以为fscanf会先读入一整串数,再做判断是否符合格式。结果不是这样的, fscanf在遇到...
  • 近期在用许多软件时发现,很多软件都有用户引导画面,基本上就是几张图片用来滑动,并且每张图片上都有一个引导的指针点,但是很多软件(包括一些大公司的...今天就打算写一个指针移动动画的引导界面,以后拿来就用。
  • 关于字符数组的指针移动操作

    千次阅读 2013-11-05 00:22:07
    //打印从第六个字符开始的后续字符,e+5表示把数组指针移到第6位 printf("%s\n",&e[5]);//打印从第六个字符开始的后续字符,&e[5]表示即第6位的地址,这一句表示第6个字地址开始打印 char sendM
  • 定位指针到当前位置的后一个 prev(); 定位指针到当前位置的前一个 reset(); 重置指针到数组的开始 end(); 定位指针到数组的最后 current(); 取得当前指针位置的值 key(); 取得当前指针位置的键
  • 通常,鼠标发生停顿是鼠标的灵敏度变差,灵敏度变差是光电鼠标的常见故障,具体表现为移动鼠标时,光标反应迟钝,不听指挥。这种硬件故障建议就是马上换个新的鼠标。不过,最好是通过以下的故障原因排除来验证,鼠标...
  • 鼠标移动出现星星鼠标移动出现星星鼠标移动出现星星
  • 【C语言】移动指针

    2019-12-11 08:08:00
    移动指针 #include<stdio.h> int main() { char *s="哈哈哈哈哈哈"; for(*s;s!="\0";s++) printf("%c",*s); } 这个s首先会指向第一个字符“哈”然后通过循环会一次打印出一个字符,s++是地址移动,打印...
  • **C#窗体程序中当鼠标指针移动到pictureBox范围内时,如何改变指针样式(最好可以自定义)** **1、如果要用到CSS请详细说明(不太会用CSS) 2、如果可以自定义指针类型最好 3、求指导!!!!!!**
  • C++文件操作指针移动-----off_t

    千次阅读 2011-12-24 22:00:36
    readfile.seekg(-3*sizeof(person),ios_base::cur); ===> readfile.seekg(-3*(off_t)sizeof(person),ios_base::cur); sizeof()返回的size_t是无符号的, 而off_t是有符号的 ... ------该语句没有移动
  • void change _ prt(); main() { int * prt,b[3] = {1,2,3}; prt = b; change _ prt(prt); printf("%d\n", * prt); } void change _ prt(p) int * p; { p+=2; } 为什么结果是1,而不是3? 谢谢。
  • python文件处理指针移动

    千次阅读 2018-11-27 17:21:00
    控制文件指针移动 with open('a.txt',mode='rt',encoding='utf-8')as f: res=f.read(4) print(res) 强调:只有t模式下read(n)中的n表示的是字符个数,其他都是以字节为单位。 with open('a.txt',mode...
  • python中可以使用seek()移动文件指针到指定位置,然后进行读/写 通常配合 r+ 、w+、a+ 模式 2.seek方法的讲解 seek第一个参数是偏移量:>0,代表向右移动,<0,代表向左移动 seek第二个参数是: 0 移动指针...
  • 指针移动任意字节数

    千次阅读 2008-11-03 17:13:00
     要在Draw函数中将num个点绘制出来,在Draw函数里进行的任何操作真是对PT_2D指针的,因此,如果传入一个PT_3D就会出现问题pts++将只会向后移动sizeof(PT_2D)个字节,其实这是一个很显然的问题,只是在潜意识里将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 396,166
精华内容 158,466
关键字:

指针移动