我一直在尝试通过动态传递要添加到堆栈的项目数量来为我的堆栈 ADT 创建一个测试器。但是,当我尝试传入一个整数(例如 22)时,它会将全局变量 (ITEMS) 分配为 50。如果我尝试其他值,则范围在 45 到 55 之间。
我的主要功能是:
int main(int numArgs, char* numItems[]) {
Stack stack;
if (numArgs == 0) {
printf("Good job, you broke C.\n");
} else if (numArgs == 2) {
int items = (int)*numItems[1];
if(*numItems[1] != ITEMS) {
setItems(items);
}
} else if (numArgs>=3) {
printf("Usage: TestStack <numItems> <-help>\n");
exit(1);
} else if(numItems[1] == "-h" || numItems[2] == "-help") {
printf("numItems - Number of items to add to the stack.\n -h (-help) - Shows this help output.\n");
exit(1);
}
/* test code here*/
}
赋值函数为:
static void setItems(int numItems) {
ITEMS = numItems;
printf("ITEMS IS %d\n",ITEMS);
}
我的全局变量只是
int ITEMS = 11; //Default value.
有什么理由让我实际上无法获得我想要传递的真正价值?