我剛學會了指標,我對語法很困惑。
在我的代碼中,我創建了一個指向 int x[] 的指標變數 ptr_int。要列印陣列中第一個元素的值,我會 *ptr_int 要列印陣列中第一個元素的地址,我會使用 ptr_int
但是,現在我創建了一個指標變數 str_ptr,它指向一個字符陣列(字串)。
我的問題是,
為什么我不能使用 *str_ptr 列印陣列中第一個元素的值?
為什么我不能使用 str_ptr 列印陣列中第一個元素的地址?
為什么 str_ptr 列印出整個字串?str_ptr 不是只指向第一個元素的地址嗎?
int x[5] = {1, 2, 3, 4, 5}; int *ptr_int; ptr_int = x; printf("\n\n The address of ptr_int is: %u", ptr_int); printf("\n The value of ptr_int is: %d", *ptr_int); char *str_ptr = "Character string to be printed"; // Confused?? printf("\n %s", str_ptr);
我對 str_ptr 的預期輸出
- *str_ptr = C
- str_ptr = <第一個元素的地址,C>
實際輸出

uj5u.com熱心網友回復:
- 格式字串
%p用于列印 void 指標。所以應該是:
printf("\n\n The address of ptr_int is: %p", (void *) ptr_int);
- 如果要列印第一個字符,則需要執行以下任一操作:
printf("%c\n", *str_ptr); // or
printf("%.1s\n", str_ptr);
- 為了列印陣列中第一個元素的地址,您將執行以下操作:
printf("%p\n", (void *) str_ptr); // or
printf("%p\n", (void *) &str_ptr[0]);
- 指向陣列的指標指向整個陣列。指向陣列第一個元素的指標指向單個值。兩個指標都指向相同的記憶體地址。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523666.html
標籤:数组C细绳指针
上一篇:ctrl x輸入是如何處理的?
下一篇:列印char*的完整大小
