c 双指针给出没有意义的错误

标签 c pointers

int p_entity(char **data){
  char *pch;

  pch = strtok(*data, " \n");
  // printf("%s ", pch);
  pch = strtok(NULL, " \n");
  // (*data) = (*data) + 1;   // 1. this is okay
  //  (*data) = pch;          // 2. but doing this will cause an error
  printf("%c %d \n", *pch, pch); 
  printf("%c %d \n", **data, *data);
}

从上面的代码中,如果取消注释 1,我将得到以下结果:

g 4927479
e 4927456

如果取消注释 2,我将得到以下内容:

g 4927479
g 4927479
      3 [main] main 8172 exception::handle: Exception: STATUS_ACCESS_VIOLATION
    470 [main] main 8172 open_stackdumpfile: Dumping stack trace to main.exe.stackdump

谁能解释一下为什么我会收到这个错误?我认为这两个分配都是合法的,并且递增(*数据)相当于直接分配我想要的地址。

最佳答案

似乎即使你收到错误(并取消注释 2),你仍然得到两个 printfs...似乎它在你的代码中很晚才崩溃。

关于c 双指针给出没有意义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576970/

相关文章:

c - 3d 加速度计计算方向

c - 为什么这个声明有意想不到的副作用?

c - 使用 '/n' 从文本文件读取

c - 在函数之间传递参数

c++ - 返回引用后,数组中的值(它是对象的属性)被垃圾替换

c++ - 在 C/C++ 代码中查找指针是否静态等同于停止问题?

更改 C 函数中变量的值

add/sub/div/mul 的 C 解析器程序。读取用户的输入想要在分号处终止我的程序而不是按回车

c++ - 共享指针声明

c++:将地址存储为字符串