[問題] 一個陣列問題

看板C_and_CPP (C/C++)作者 (Jun)時間15年前 (2010/11/12 15:26), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
#include<iostream> using namespace std; #include<string.h> #include<stdlib.h> #include<climits> int main() { char *NBA[3]={"wade","james","bosh"}; cout<<sizeof(*(NBA+1)); system("pause"); } 想問一下*(NBA+1)內容不是應該是james嗎? 它的大小應該是五個字元,但為什麼sizeof出來是四呢?看來我指標要搞懂還有一段距離 ,能請各位大大幫我解惑嗎? sizeof(NBA) 出來是12,是代表用到三個指標嘛?一個指標4Byte,不知道這樣想有 沒錯! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.214.36

11/12 15:29, , 1F
strlen(*(NBA+1));
11/12 15:29, 1F

11/12 15:32, , 2F
NBA放了三個指向字串的指標,一個指標4Byte(x86)
11/12 15:32, 2F

11/12 15:33, , 3F
sizeof(*(NBA+1)) = sizeof(char*) = 4
11/12 15:33, 3F

11/12 16:50, , 4F
建議翻一下 K&R2 第五章後半部的說明
11/12 16:50, 4F

11/12 18:56, , 5F
好可怕的 header 用法
11/12 18:56, 5F

11/12 19:30, , 6F
I go crazy because of you, 陣列好好用 [] 會很難嗎
11/12 19:30, 6F

11/12 19:36, , 7F
原po這樣搞會犯第4誡
11/12 19:36, 7F

11/12 19:51, , 8F
*(NBA+1) 等於 NBA[1],指標字串的元素當然是指標大小4
11/12 19:51, 8F

11/12 19:52, , 9F
指標陣列的元素的大小,當然是跟指標大小一樣是4 (剛打錯)
11/12 19:52, 9F
文章代碼(AID): #1CtEmtIp (C_and_CPP)
文章代碼(AID): #1CtEmtIp (C_and_CPP)