首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针操作 怎么判断数组结尾

2014-01-01 
指针操作 如何判断数组结尾问题简要描述:有一个数组 Arry[],有若干个成员。有一个指针 pArry,指向数组的成

指针操作 如何判断数组结尾
问题简要描述:
    有一个数组 Arry[],有若干个成员。
    有一个指针 pArry,指向数组的成员。初始化为: pArry = Arry;
    
    pArry 从数组头,一直 pArry++; 移动到数组结尾。

问题:
   如何数组数组结尾了?
    
   
[解决办法]

#include <stdio.h>
int main() {
    int Arry[10];
    int *pArry;
    int i;

    for (i=0;i<10;i++) Arry[i]=i;
    pArry=Arry;
    while (1) {
        printf("%d\n",*pArry);
        pArry++;
        if (pArry>=Arry+sizeof(Arry)/sizeof(Arry[0])) break;
    }
    return 0;
}
//0
//1
//2
//3
//4
//5
//6
//7
//8
//9
//

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

通过元素个数判断。不能通过指针等于某个值。


恩,这倒是一个方法。
但是我的实际情况是,这个处理方式,不太适应:
  有一个巨大的数据,我编写了一个爬虫程序,不断地爬行着,无法知道哪元素个数是多大

数组定义的时候不需要定义个数吗?


引用:
数组定义的时候没有大小?动态开辟的话也有个变量吧。没有这个大小信息无法判断是否结束


不好意思,是我描述的不恰当。

数据时刻在不断地增加着,这里的这个数组,算是一个缓冲,我本意是想问……。 



通过你的描述我理解了两种可能性:
1.你想编写一个shellcode注入别人的代码,在代码中你找到了别人使用数组的地方,想扫描这个数组,但是需要判断这个数组有多大,根据你的描述,这块内存是动态增长的,所以这块空间和数组有一定区别,是不能通过sizeof直接得到大小,并且C语言没有获取一个地址的所指向空间的大小的机制,因此,这种情况,只有通过更进一步分析汇编代码解决。
2.你自己写的代码自己却不知道分配的数组有多大,即使是动态分配的,也不应该出现这样的情况,如果真的 出现这样的情况,建议楼主继续学习C语言和数据结构相关知识,多编代码,多学习,这样可以有效避免这样的情况。

热点排行