c语言指针移动
1. c语言中文件指针怎样向前移动一个字节
你是用C标准I/O库函数的话,
(1)文件定位:
文件定位指读取或设置文件当前读写点,所有的通过文件指针读写数据的函数,都是从文件的当前读写点读写数据的。
常用的函数有:
#include
<stdio.h>
int
fseek(FILE
*stream,
long
offset,
int
whence);
fseek
设置当前读写点到
offset
处,
whence
可以是
SEEK_SET,SEEK_CUR,SEEK_END,这些值决定是
从文件头、当前点和文件尾计算偏移量
offset.
你可以定义一个文件指针FILE
*fp,当你打开一个文件时,文件指针指向开头,
你要指到多少个字节,只要控制偏移量就好,例如
相对当前位置往后移动一个字节:fseek(fp,1,SEEK_CUR);中间的值就是偏移量。
如果你要往前移动一个字节,直接改为负值就可以:fseek(fp,-1,SEEK_CUR)
2. c语言,关于指针内数据的移动
你不能这么做。buf+11的确是buf[11]的地址,这没错,但因为buf是数组buf[1024]的起始地址,这是一个常量,buf不能更改,你不能给它赋值,即:你不能直接buf = buf+11;
有更好的办法就是内存复制。你可以使用memmove函数,它包含在<string.h>头文件中,其定义原型如下:
void*memmove(void*dest,constvoid*src,size_tcount);
它的作用是由src所指内存区域复制count个字节到dest所指内存区域。具体到你的需求,这个函数应该这样调用:
memmove(buf,buf+11,1024-11);
其中,1024 - 11指的是从第11个元素开始到第1024个元素结束,这之间一共有1024 - 11个元素,由于是char型的,每个元素占1个字节,所以就是1024 - 11个字节。
这样调用的目的就是把 buf[11]开始之后的数据往前移到buf[0]开始的位置,这要比用for循环一个字节一个字节地移动要高效得多。
3. c语言中关于指针移动问题
指针类型所占内存空间在32位系统下为4个字节。是指:指针本身占的长度。
移动指针的时候。。。。。。。。。。。。。指的是:指针所指的类型所占的长度啊。
你可以用sizeof()看一下 所占内存大小。
比如 char *p; int *s;
那么:
sizeof(p)=4,sizeof(*p)=1
sizeof(s)=4,sizeof(*s)=4
注意,结果依据编译器而定。TC一般是2字节。。VC++是4字节。
4. c语言中移动指针*p++。它移动了多少啊.一个字节吗
不一定,要看这个指针类型的基类型,即:
如果是char
*p,那么p++就移动一个字节
如果是int
*p,那么p++就移动sizeof(int)个字节。
总之一句话,对于指针p而言,p++移动的字节数是sizeof(*p)
5. C语言文件指针自动移动
文件内部指针不是就是用打开文件函数所赋值的那个指针,
打开函数的指针,是文件流的指针,指向这个文件流。
内部指针指向当前操作在文件流中的位置
fp是文件指针的话
可以使用ftell(fp)来获取当前内部指针位置。
也有fseek函数来设置内部指针位置,这些函数调用的时候,必须使用文件流的 指针。文件流的指针始终是这个fp,但内部指针的位置是一直在移动的,没有一个可见的内部指针的变量来让你操作,只对文件指针操作就可以了。
读写文件的时候内部指针自动移动,是C的IO系统管理来实现的,这个文件流其实仍然是IO,跟键盘鼠标都是由IO系统管理来做的,不用去关心底层的具体操作,只要知道读写操作以后内部指针变了,就行。
6. c语言指针移动问题
backward++;
forward--;
用物理的角度看,限定其中一个为
参照物
,那么另一个的速度就是2。
擦肩而过
你懂的
吧.....
每次加2可能跳过了你的那个相等的机会。
backward
<=
forward
比较可靠。
7. 怎样才算是移动指针 C语言
指针的值变化的时候就叫移动指针比如:
int arr[4]={1,2,3,4};
int *p;
p=arr;
p++; //p指向下一个元素了,这个就叫移动指针
8. 在C语言编程下怎么控制windows系统指针的移动
使用用SendInput函数可以控制指针的移动。第二个参数是一个INPUT结构体的数组,第一个参数代表这个数组有几个元素,最后一个参数代表这个数组中每一个元素是几个字节。参考以下代码。
#include <windows.h>
#pragma comment(lib, "user32.lib")
int main() {
INPUT mouseInput;
ZeroMemory(&mouseInput, sizeof mouseInput);
mouseInput.type = INPUT_MOUSE;
mouseInput.mi.dx = 10;
mouseInput.mi.dy = 10;
mouseInput.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &mouseInput, sizeof(mouseInput));
return 0;
}
9. c语言怎样移动文件指针到制定位置啊
参数为下列其中一种:
SEEK_SET:从距文件开头 offset 位移量为新的读写位置;
SEEK_CUR:以目前的读写位置往后增加 offset 个位移量;
SEEK_END:将读写位置指向文件尾后再增加 offset 个位移量。
10. C语言指针移动的问题,程序结果是53,怎么得来的
x[1][1]表示的是二维数组第二行第二列的数据,记住数组的下标是从0开始的。
第二行第二列是5所以&x[1][1]代表其地址,for循环里i可以取0和2,那么p[0]就是5,p[2]就是5的后两个3。