【问题标题】:char* differs in levels of indirection from char(*)[100]char* 与 char(*)[100] 的间接级别不同
【发布时间】:2016-08-02 15:42:59
【问题描述】:

基本上,当刚刚引发此错误时,我正在接受用户输入并使用它从列表中删除。该代码实际上在一小时前就可以工作,所以我不知道为什么 Visual Studio 现在对此感到厌烦。

char courseName[100];
scanf("%s", courseName);
deletefromlist(&list, &courseName);

deletefrom 列表函数将(Courselist * self, char * data) 作为参数。

我怎样才能纠正这个错误并在将来避免它?干杯!

【问题讨论】:

标签: c char indirection


【解决方案1】:

函数的第二个参数接受char *,所以你应该传递courseName而不是&courseName

或者根据deletefromlist 的性质,您可能需要更改参数类型。

【讨论】:

  • 是的,我试过了,代码仍然中断。也许我得再看看我的删除功能。但是为什么 char * 和 char(*) 不一样呢?因为它们都指向某物
  • 您将courseName 声明为char 的数组,因此courseName 的行为(几乎)类似于char * 指针(它指向数组的第一个char)。在你的删除函数中,确保你有正确的保护措施,以避免在处理数组时溢出。
  • 是的,这是有道理的,因为我遇到了内存访问冲突。干杯队友
  • 数组作为参数传递给函数时,会耗尽指向数组中第一个元素的指针。
猜你喜欢
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多