use*_*487 0 c variables int static
(从原始问题改变变量名称以适应实际代码)我是C的新手,我正在实现一个队列.错误与static int head=0变量有关.每次调用dequeue()时它都会增加1.当队列出队并调用函数get_person()时,似乎发生错误.然后头变量似乎得到一个高随机数,如23423449.我不知道这是从哪里来的.但是,如果我摆脱"static"关键字,因此声明变量int head=0,它可以正常工作.怎么会?
static int head=0
int head=0
dat*_*olf 5
在包含文件的顶部使用"全局"变量:static int variable1=0
static int variable1=0
这清楚地表明,您不了解static关键字在全局范围内的含义.在全局范围内,在函数外部,静态意味着变量仅对编译单元中的代码可见,该变量已在其中定义.
static
现在,如果在标头中定义静态变量,则包含该标头的每个编译单元将具有该名称的自己的变量.所以你的程序中充斥着许多同名的变量,每个变量都特定于它所在的编译单元.
我认为你真正想要的是extern标题中的非静态声明,以及实际定义变量的一个编译单元.
extern
归档时间:
11 年,11 月 前
查看次数:
485 次
最近记录: