这是交易。我有一个大字符数组,并试图操纵它。下面是一些代码,我使用来测试这个想法:C指针故障
#include <stdio.h>
char r[65536],*e=r;
main() {
e+=8;
while(*e) {
*e+=1;
e+=5;
*e-=1;
e-=1;
}
*e+=1;
printf("%i",*e);
printf(" %c",e);
}
什么它应该做的是:
- 设置为8
- 的第一个元素之后,而目前的元素不为零,
- 移动到下一个单元格
- 添加5〜它
- 回迁
- 减去一个。 (此重复8次,因为同时测试将失败时,它已经减去最后一个)
- 显示指针
- 显示阵列,该指针指向(希望)的内容的位置
作用:
1 Φ
,而不是
40 (
^^ 8 x 5 = 40,这就是它应该显示的内容。
任何提示/建议/批评接受。
你几乎可以得到它,但是当你用* e定义一个指针时,你不需要把它称为* e只是e,并且给你指针的内存地址。当你再次像* e + = 8一样时,你正在解引用它,并在ASCII值char中加上8,这使得它有一些其他的字符。 – L7ColWinters 2012-01-27 14:01:10
请注意,'main'应该返回一个'int'(通常为0)。 – 2012-01-27 14:38:23
你也应该初始化你的数组。在* e + = 8之后不能保证* e是8;' – user606723 2012-01-27 17:31:04