尋找與處理字符串數組相關的特定主題的一些說明。似乎有幾個相關的問題,但我無法找到一個討論我的問題。如果之前已經詢問過,請將我指向相關主題。訪問指向字符串的指針數組
在下面的代碼片段(檢查printf語句)中,我使用相同的變量來訪問內存位置的值和內存位置的地址。我不太確定這是我應該如何寫這段代碼。有沒有更好的方式可以清楚地表明我是否在訪問地址或價值?
char *board[NUM_MAX_ROWS] = {"0101001",
"1101011"};
int main()
{
int i, num_rows=0, num_cols=0;
num_cols = strlen(board[0]);
num_rows = ARR_SIZE(board);
for (i=0; i<num_rows; i++)
printf("%s stored at %p\n", board[i], board[i]);
}
我第一次嘗試這個樣子
while(*board != '\0')
{
printf("%s stored ar %p\n", *board, board);
board++;
}
顯然,這並不工作:)不過我還是不太清楚如何,這是由編譯器解釋。
謝謝。
你的第一段代碼是正確的。你傳遞一個指針('char *')兩次 - 參數的解釋依賴於格式說明符。 '%s'將從地址開始打印字符,並以NUL字符停止。 '%p'只會打印地址。 – jrok
你能解釋爲什麼第二個明顯不起作用? – texasbruce
第二個函數無法編譯時出現錯誤:左值需要作爲增量操作數(參考board ++)。我認爲這會增加一個指針。 – dinesh