-3
我已經寫了一個函數來獲取一個char
數組並操作它的值(即,如果它是一個數字,則將char轉換爲int)。但是,我對char數組的管理方式有疑問。當我查看input[i]
時,它是正確的值(放在數組中的值,但是,&input[i]
給出了一個大寫字母,我不知道它爲什麼會這樣做。例如,如果我輸入「11」並且跟蹤變量,我可能會得到以下結果:從字符數組中獲取一個值
input[0] is 1
&input[0] is D
input[1] is 1
&input[1] is E
在我的代碼,如果我嘗試使用input[i]
,我得到的「傳遞參數使得指針從沒有投整數」的錯誤。如果我使用&input[i]
。 ,代碼編譯但我得到了錯誤的結果。這是怎麼回事,我如何訪問我想要得到的值?
以下是我的代碼:
void myFunction(char *input) {
Queue* numberQueue = queue_new();
Queue* opQueue = queue_new();
int i = 0;
int j;
for (j = 0; j < strlen(input); j++) {
printf("input[%d] is %c\n", i, input[i]);
printf("&input[%d] is %c\n", i, &input[i]);
int number = (int)input[i];
/* queue_push_tail(queue, data) */
queue_push_tail(numQueue, number); /* ERROR */
/* rest of code omitted */
i++;
}
}
提示:您認爲'&input [i]'是什麼? – juanchopanza 2014-10-11 07:44:34
不是'&'表示它是對變量在內存中的位置的引用嗎?我不完全明白爲什麼這會起作用,但正常變量不會。 – anoneponymous 2014-10-11 07:45:58
@anoneponymous您正在打印地址並將其轉換爲%c,因此基本上可以顯示任何內容。 – 2014-10-11 07:47:59