[问题] 请教一个结构阵列大小的问题

楼主: CoSNaYe ( ~~)   2015-01-13 23:35:28
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Xcode 6.1.1
问题(Question):
对于阵列大小这部分真的搞不大懂,麻烦大家一下了。
我写了如下的code, 简单求一下 1)一个普通字符阵列 2)一个结构阵列 的大小
======================================================================
int main(int argc, const char * argv[]) {
struct wNode wordArray[100];
char word[100];
size_t strcSize = (sizeof(wordArray)/ sizeof(struct wNode));
这里得到的strcSize 为 100
size_t strcSize2 = test(wordArray);
为什么用function传回来的strcSize2 就变为0?
size_t charSize = (sizeof(word)/ sizeof(char));
这里得到的testSize 为 100
size_t charSize2 = test2(word);
为什么用function传回来的testSize2 就变为8?
}
size_t test(struct wNode *test){
size_t testSize = (sizeof(test)/ sizeof(struct wNode));
return testSize;
}
size_t test2(char *test2){
size_t testSize = (sizeof(test2)/ sizeof(char));
return testSize;
}
======================================================================
麻烦大家了, 感谢!!
作者: wenyonba (射后不理很XX啊!!!!)   2015-01-14 00:04:00
因为蓝色部分你是传阵列进 sizeof,绿色传的是指标
作者: fireslayer (fireslayer)   2015-01-14 00:14:00
阵列跟指标是不同type 只是阵列可以Decay成指标
作者: longlongint (华哥尔)   2015-01-14 00:22:00
指标都是4bytes哦but长度固定的阵列可以在编译期间算出大小阵列名称跟指标不一样 但是有时候可以当成指标用 是因为程式语言本身operations的定义所造成的
作者: ACMANIAC (請肥宅救救肥宅)   2015-01-14 00:25:00
指标也有可能 8bytes 等等,总之,是视系统而定的固定值
作者: longlongint (华哥尔)   2015-01-14 00:26:00
!! 你的平台似乎是8 bytes
作者: tj386 (最爱欧阳三姊妹♥♥♥)   2015-01-14 00:42:00
对指标做sizeof()只会得到指标的大小,跟array不同而你的系统64bit指标大小为8bytes,所以/sizeof(char)刚好=8
楼主: CoSNaYe ( ~~)   2015-01-14 00:57:00
那请问有办法知道指标指的那"整个"array的大小吗?
作者: ACMANIAC (請肥宅救救肥宅)   2015-01-14 01:03:00
size_t test(struct wNode test[100]) 应该可以,你试试
作者: EdisonX (卡卡兽)   2015-01-14 08:18:00
楼上,1) test 撞名了 2) 传进引数的 test 会被解读为指标

Links booklink

Contact Us: admin [ a t ] ucptt.com