c - 当我将变量传递给函数时,变量的值会发生变化

标签 c

今天我在调试程序时遇到了一个问题。

我正在尝试将整数变量传递给同一程序中的函数。当函数接收到值时,函数内部的接收变量中的值不知何故有所不同,我只是无法找出原因。

下面是调用该函数的行。

prefetch_miss(addr,pref_m,sbuff,0,evict_row, SB);

下面是接收函数的开始3行。

void prefetch_miss(int address, int m, s **sbuff, int next, int r, cache *b) {

int index_value=0, tag_value=0;
address = address + 1;

请注意addr是一个全局变量。在调试中,我可以看到函数调用之前的addr值为33558587。在函数内部,address的值为33558569。

我哪里出错了?

最佳答案

检查您的全局变量之前是否定义了某种数组,并且您正在覆盖它超出数组大小的分配,从而更改变量地址的值。顺便说一句,如果地址是全局变量,为什么需要将其传递给例程?全局变量对所有例程都可见。

关于c - 当我将变量传递给函数时,变量的值会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894628/

相关文章:

c - 解释lz4双缓冲示例

c - 我怎样才能让数组从用户那里读取?

c - open() 第一次尝试失败

c++ - RegQueryValueEx 得到一个奇怪的值

c - 为什么我们将字符串存储在字符指针中,例如 fopen(); 中?

c - 为什么 GCC 在将有符号文字分配给无符号类型时不产生警告?

c - C中未声明的标识符

c - 二维数组 - C 中的无效初始值设定项?

c - 如何打印特定单词之前的所有内容以及特定单词之后的所有内容?

c - 为什么使用返回值时将0移入堆栈?