作者spider391 (小乖)
看板C_and_CPP
标题[问题] 关於取址运算元 & 的一些迷思
时间Thu May 21 16:30:58 2009
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
1F:推 legnaleurc:"迷思"不是这样用的 05/21 17:22
2F:→ legnaleurc:印象中阵列的址好像就是它自己 05/21 17:24
3F:推 zlw:str 的型态应该「不」是 const char[9]吧 05/21 17:34
4F:推 Ebergies:C 阵列的 name 和 &name 是相同的 05/21 18:58
5F:→ softwind:哇勒 还迷魂勒 话说 func pointer好像 测试出来也一样欧 05/21 22:11