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