網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術 > 一般軟體與網路使用討論

回覆
 
主題工具
  #1  
舊 2014-06-10, 03:05 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,008
預設 指標問題之一

習題有此程式:
#include <stdio.h>

int main(void)
{
char str[]="hello world!";
char *p;
int x;

p=str;
for(x=0;p[x];x++)
printf("%c",p[x]);

return 0;
}

請問為何p=str而不是p=&str?
我有試過p=&str,結果跑出來的答案也是一樣的,但為何課本上不加&?二者所代表的意義應不太相同吧?雖然本題的結果是一樣的?

thanks.
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #2  
舊 2014-06-10, 03:44 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,008
預設

我有一個相關的心得如下題:
#include <stdio.h>

int main(void)
{
char str[80],*p;
printf("enter:\n");
gets(str);
p=&str;
printf("%c %s",*p,p);

return 0;
}

一是,p=str 或者 p=&str好像結果是一樣的?不知是否隱含了什麼不可知的差異?

二是,如果*p則只能印出來這個p所指到的str字串的第一個字符,所以要用%c,如果想印出整列字串%s,則p就可以了,用*p反而出錯。

但我只知其然而不知其所以然。還望先進們解釋指導一下。 我覺得如果不了解一下實體記憶體的長相和配置,似乎就會紙上談兵,一知半解,是嗎?
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
回覆

主題工具

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 07:21 PM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.