这是交易.我有一个大字符数组,我试图操纵它.这是我用来测试这个想法的一些代码:
#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 ?
而不是
40 (   
^^ 8 x 5 = 40,这就是它应该显示的内容.
接受任何提示/建议/批评.
Arm*_*yan 10
你提领正是你应该没有,反之亦然.你打算做的是:
*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
* 检索指针指向的值.
"将第一个元素设置为8"即可
*e = 8;
"移动到下一个单元格"将是
e += 1;
等等.
有了e您正在访问的指针地址.递增/递减它将使指针前后移动.
随着*e您访问它指向的值(取消引用它).
你大部分时间都在反过来使用它.
备注:注意,在声明中e你必须写入char *e = r;初始化指针(而不是值).这里*指定了类型e.声明如下:e是一个指针char,它的值是(地址)e---它类似于char *r; r = e;.
*e 取消引用指针; 也就是说,它操纵指向的值.操纵指针本身意味着e直接操作.
当你这样做时e+=5,你将指针向前移动5个空格,如果你这样做*e+=5,那么你将指针指向的值加5.