c - C指针的问题

标签 c pointers

这是交易。我有一个大字符数组,正在尝试对其进行操作。这是我用来测试这个想法的一些代码:

#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);
}

它应该做的是:

  1. 设置第一个元素为8
  2. 然后,当当前元素不为零时,
    1. 移动到下一个单元格
    2. 加5
    3. 后退
    4. 减一。 (这会重复 8 次,因为 while 测试会在减去最后一个时失败)
  3. 显示指针的位置
  4. 显示指针指向的数组内容(我希望)

它的作用:

1 Φ

相对于

40 (   

^^ 8 x 5 = 40,这就是它应该显示的内容。

接受任何提示/建议/批评。

最佳答案

恰好在您不应该的地方取消引用,反之亦然。你的意思是:

*e+=8;
while(*e) {
    e+=1;
    *e+=5;
    e-=1;
    *e-=1;
}
*e+=1;
printf("%d",e - r); //index
printf(" %p",e); //pointer value      
printf(" %c",*e); //pointee value

* 检索指针指向的值。

关于c - C指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9034297/

相关文章:

C Matlab Mex 网关文件,打印 phrs

c - 如何在我的代码中使用 CPLEX 时间限制?

c++ - 指向基类的指针在 while 循环中丢失,导致段错误。 C++

c++ - 如果ap是一个指针,为什么我可以通过ap[i]来引用它的值呢?

c - 取消引用 void 指针

Clang 的 ASan 不检测悬空指针的使用

c - 使用 fread() 挂起直到被杀死

C语言无法输出数组?

c++ - 获取错误 C2440 : char[]* to char* (pointers)

c - 需要澄清指针在给定代码段中如何工作