2 mastermindw mastermindw 于 2017.01.07 09:35 提问

循环按地址偏移取指针当中的值

for(k=0;k<100;k++)
{
pfSrc[k] = 1;
}
for(l=0;l<9;l++)
{
pfConvCore[l] = 1;
}
for (i = 0, p = 0; p<8; i += 1, p++)
{
for (j = 0, q = 0; q<8; j += 1, q++)
{
for (l = 0;l<3;l++)
{
for (k = 0; k<3; k++)
{
result += zxpfSrc[l*10 + k + i*10 + j] * zxpfSrc[l*10 + k + i*10 + j];
printf("a: %d b: %d\n",pfSrc[l*10 + k + i*10 + j],pfSrc[l*10 + k + i*10 + j]);
}
}
pfDst[p*8 + q] = result;
result = 0;

        }
    }
        我按照这个循环取数组当中的值,按理得到的值应该都是1,可是运行之后前面几个还是对的 到后面就出现很大的值了 求大神指教

1个回答

Tiger_Zhao
Tiger_Zhao   Rxr 2017.01.10 16:36

你初始化/打印都用的是pfSrc[],但是计算却用zxpfSrc[]

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
指针偏移问题
int *p = (int*)100 p是int类型的指针,它的意义是int型数据的地址。这条语句就是将100转换为int*赋给p,
C++数组地址偏移
C++中数组名可以作为数组的首地址使用。数组名是一个右值,不能对其进行自增或者自减处理,但是可以对其作为右值进行运算处理。对数组名进行运算处理可以看成是对数组地址进行了偏移,而偏移的单位可能是数组中元素的大小,也有可能是整个数组的大小。
理解指针的偏移
int main() {  char str[20] = {"acnfgdfgf"};  char *p = str;  while(*p)  {   p++;  }  return 0; } 此段代码中,指针p指向一个char类型的字符,指针每偏移一次, 跳到下一个字符。指针本身的地址没有改变,指针所指向的地址加一 int main() {  char* str[5]
数组指针和偏移地址
C语言偏移地址
C语言中数组与指针偏移
今天在单位被同事问到指针指向数组的问题,回来敲代码总结一下。先给出代码如下:#include <stdio.h>int main() { int a[3][2]= {1,2,3,4,5,6}; int *p, *q; long int *m; p = &(a[0][0]); q = a[0]; m = (long int *)a; printf("
如何取得结构变量的偏移地址
struct Foo{   int a;   char b;   short c;};如果我想观察编译器为了达到内存对齐的要求都在Foo的每个变量后加了多少padding字节,有什么办法?我们知道编译器在定位一个成员变量的时候利用了2个信息:1. 类对象的地址2.将要访问的成员变量相对于类起始地址的偏移地址这样编译器就可以通过 类对象的地址+成员变量的偏移地址 的简单计算得到成员变量在内存中的真正
C语言中的指针加减偏移量
 首先看一段程序:#include int main(){ int a[5] = {1, 2, 3, 4, 5}; int* p = (int*)(&a + 1); printf("%d, %d /n", *(a + 1), *(p - 1)); return 0;} 输出结果为:2, 5 第一个结果好说,a+1后指针指向了
循环读取某一列的值,进行相应的操作
1,  2,if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)         {             Label lblOfZhaiqian = e.Item.FindControl("zhaiquan") as Labe
如何求结构体成员的偏移地址 || 结构体的 sizeof 总结
C 语言中允许将值为 0 的变量强制转换成任一类型的指针,转换结果是一个NULL指针;(type*)0 // 一个 type 类型的NULL指针用这个指针访问结构体内的成员是非法的,但是&(((type*)0)->field)是为了计算 field 的地址 ,编译器不会产生访问 field 的代码,只会根据 type 的布局和起始地址在编译期计算这个地址(常量)。而又因为初始地址为 0,故该地址的值
delphi中实现指针偏移?
请问在delphi中如何实现指针偏移?     如下例(VC++):     BYTE   *lpData;     lpData=lpdata+40;         答:     lpData:   ^byte         lpData   :=   Pointer(LongWord(lpData)   +   40);     或者:p2 := Ptr(Integer(p2) + 1