iT邦幫忙

DAY 4
7

C++ 指標 30日系列 第 4

C++ 指標 30日(4)

指標就在前方不遠處...


今日主題:一維陣列

接下來我們將焦點轉到一維陣列,要注意的是陣列名稱即是該陣列啟始位址。

請看程式碼:

#include <stdio.h>
#include <string.h>

main()
{
   int x[3];
   int i;
   
   for(i = 0; i < 3; i++){
       scanf("%d", &x[i]);     // 依序輸入:1 2 3
       //也可以這樣寫
       //scanf("%d", x+i);
   }
   
   for(i = 0; i < 3; i++){
       printf("%d,", x[i]);    // 結果:1 2 3 
   }
}

鐵人文總整理


上一篇
C++ 指標 30日(3)
下一篇
C++ 指標 30日(5)
系列文
C++ 指標 30日26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
總裁
iT邦好手 1 級 ‧ 2013-09-19 11:11:34

沙發

看更多先前的回應...收起先前的回應...
總裁 iT邦好手 1 級 ‧ 2013-09-19 11:13:54 檢舉

//也可以這樣寫
//scanf("%d", x+i);

不能寫x++嗎??...疑惑

ted99tw iT邦高手 1 級 ‧ 2013-09-19 11:14:13 檢舉
ted99tw iT邦高手 1 級 ‧ 2013-09-19 11:16:35 檢舉

cdfu提到:
不能寫x++嗎??

不能,因為X是陣列名稱,一旦宣告後即視為常數,常數不能改值,故不能用++。

總裁 iT邦好手 1 級 ‧ 2013-09-19 11:21:43 檢舉

所以
int *y;
y=x;
y++;

這樣就可以了嗎??...疑惑

ted99tw iT邦高手 1 級 ‧ 2013-09-19 11:28:28 檢舉

這樣可以,我剛有試過~灑花

0
總裁
iT邦好手 1 級 ‧ 2013-09-19 11:25:13

明天開始我要請假三天,要去南投....臉紅

南投也可以上網呀
像我在北投
不怕筆電弄溼,也是照樣上課喲
泡湯

0
海綿寶寶
iT邦大神 1 級 ‧ 2013-09-20 11:42:52

cdfu提到:
int *y;
y=x;
y++;

我覺得這是指標(或者 C 語言)最方便也最令人害怕的地方
y 是 int 的指標
(*y)++ 是數字加一
y++ 是指標加一(是 byte 還是一個 int 那麼多 byte疑惑)
指標隨便指或不小心指錯地方
然後隨便改一些值
程式或整個 OS 就被拉下來
汗

ted99tw iT邦高手 1 級 ‧ 2013-09-20 12:38:31 檢舉

iT邦幫忙MVPantijava提到:
(是 byte 還是一個 int 那麼多 byte)

此例是一個 int 那麼多 byte,若指標是指向一個char,則位址增加量是一個byte謝謝

謝謝

0

iT邦幫忙MVPantijava提到:
(*y)++ 是數字加一
y++ 是指標加一

魔鬼總是隱身小地方...搖頭

我要留言

立即登入留言