:开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC,debian
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
副程式(阵列),整数阵列元素个数无法计算,字串可以
喂入的资料(Input):
int a[]={4,5,6,7}
预期的正确结果(Expected Output):
int a[]=4,5,6,7,
错误结果(Wrong Output):
a[]=4,
程式码(Code):(请善用置底文网页, 记得排版)
1 #include <stdio.h>
2 void pntArr(int *a){
3 int len_a=sizeof(a)/sizeof(int),i;
4 printf("len....%d\n",len_a);
5 printf("a[]=");
6 for(i=0;i<len_a;i++){
7 printf("%d,",*(a+i));
8 }
9 }
10
11 int main(){
12 int a[]={4,5,6,7};
13 int len_a=sizeof(a)/sizeof(int);
14 pntArr(a);
15 }
补充说明(Supplement):
整数阵列call副程式,查google说是typeof不能计算动态阵列,
看其它类似的代码都是长度(元素数量)一起传过去,
我问题是在...我把int []改成char [],就能得到我预期的结果。
ex.. char a[]="abcd";
作者: narukaze (Pt) 2014-12-23 07:04:00
是不是因为传array到function, function不知物件个数然后sizeof(a)计算到pointer的大小又刚好你的物件个数是4个