[問題] 關於取址運算元 & 的一些迷思
char str[] = "Sammy236";
str 的型態應該是 const char[9]
若是想對於其內容做些讀取的動作
以我自己的經驗是宣告一個指標指到此字串陣列
再利用指標作處理
char* pc = str;
char c = pc[0]; // 讀取字元
str 的裡面存放的是字串陣列第一個元素的位址(很直觀)
但我有看到另外一種寫法,有點顛覆我的觀念 ><"
如下
char* pc = (char*)&str;
這我就無法用上面的解釋來說明
第一個元素位址在取位址??
下面是測試範例,結果兩個 pc 位址都一樣,印出的字串也相同。
請問第二種要如何來解釋他的用法
謝謝
========================================
int main(int argc, char* argv[])
{
char str[] = "Sammy236";
char* pc = str; //mark1
printf("pc = %d\n",pc);
printf("%s \n",pc);
pc = (char*)&str; //mark2
printf("pc = %d\n",pc);
printf("%s \n",pc);
return 0;
}
==========================================
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.97.179
推
05/21 17:22, , 1F
05/21 17:22, 1F
→
05/21 17:24, , 2F
05/21 17:24, 2F
推
05/21 17:34, , 3F
05/21 17:34, 3F
推
05/21 18:58, , 4F
05/21 18:58, 4F
→
05/21 22:11, , 5F
05/21 22:11, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章