小编sha*_*tes的帖子

比较字符串时返回1时出错

任何人都可以告诉我为什么当我尝试使用我的定义错误宏返回1时Visual Studio给我一个错误?VS说它期待一个支架:/

#define ERROR "A generic error has occured";

const char *RetAdapters(int *adapters) {

    if(...) {} 

    else
        return ERROR;
} 


int main()
{
    const char *ret = RetAdapters(&input);

    if (strcmp(*ret, ERROR) == 0) {
        return 1;
    }

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor preprocessor-directive

2
推荐指数
1
解决办法
59
查看次数

为什么需要转换指针算术?

如果我想迭代一个字符串,在这种情况下'test',我可以像这样使用指针算法来获取下一个字符:

char *c = "test";
*c++;
putchar(*c);
Run Code Online (Sandbox Code Playgroud)

这将打印第二个字母'e'.

但是,如果我想去第三个角色,为什么我不能说:

char *c = "test";
c = *c + 2;        //*c = *c + 2; also doesn't work
putchar(*c);       //Exception thrown: write access violation.
Run Code Online (Sandbox Code Playgroud)

据我所知,使用指针算法获取第三个字符的唯一方法是像这样强制转换它:

char *c = "test";
c = (char *) c + 2;
putchar(*c);
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么会这样吗?

c pointers

0
推荐指数
1
解决办法
99
查看次数