【问题标题】:I'm getting a syntax error operand of '*' must be a pointer but has type "char"我收到一个语法错误,“*”操作数必须是指针,但类型为“char”
【发布时间】:2022-01-12 00:00:55
【问题描述】:

我收到了这个错误,我不知道为什么

void mem_move(void* dest, void* src, unsigned size)
{
    char* d = dest, * s = src;
    char buff[100];
    char* b = buff;
    for (int i = 0; i < size; i++)
        *b[i] = *s[i];
    for (int i = 0; i < size; i++)
        *d[i] = *b[i];
}


void main()
{
    char buffer[] = "one two three  ";
    mem_move(buffer + 3, buffer, 10);
    char buffer2[] = "one two three  ";
    mem_move(buffer2, buffer2 + 3, 10);
}

我应该提到我正在使用 Visual Studio Community Edition 2022

【问题讨论】:

  • 来自*b[i] = *s[i]; 应该是b[i] = s[i];
  • b[i]d[i] 的类型为 char

标签: c char


【解决方案1】:

在这些陈述中

*b[i] = *s[i];

*d[i] = *b[i];

您使用下标运算符 [] 和取消引用运算符 * 两次取消引用指针。

b[i] = s[i];

d[i] = b[i];

注意,根据C标准,不带参数的函数main应该声明为

int main( void )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 2021-06-02
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多