level 11
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a[10];
int *b=(int *)(&a+1);
printf("the length is %d\n",b-a);
system("pause");
return 0;
}
运行结果:10;
类似的能不能推广到所有的数组(比如new的),或者写一个函数来返回数组长度。
PS:突然发现我对数组和指针,引用越来越糊涂了。
2011年03月06日 14点03分
1
level 12
V5!
new出的伪数组不含数组下标信息,不能这样做
2011年03月06日 14点03分
2
level 11
本来以为这是个好方法,可惜啊。。。始终是个悲剧。不过,有没有办法可以用 函数返回例如:int a[10]这样的长度?我刚刚准备写int len(int &a[]);的,结果报错。。。至此开始迷惑。
2011年03月06日 14点03分
4
level 12
sizeof(int[10])/sizeof(int)
2011年03月06日 14点03分
5
level 7
一般不是
int NameOfArray[10];
sizeof(NameOfArray)/sizeof(int)吗??
2011年03月06日 14点03分
7
level 11
回复:5楼
希望传入的参数:数组指针。回复:6楼 i从哪里来?
2011年03月06日 14点03分
8
level 11
回复:10楼
看了下,貌似那些我都算明白。
换个问题吧,编译器怎么分辨数组和指针。
比如int a[10];zieof(a)/sizeof(int);&a是什么意思?
2011年03月07日 03点03分
11
level 12
编译期识别,编译器怎样分辨普通变量类型,就怎样分辨指针和数组
2011年03月07日 04点03分
12
level 6
-11
假设将数组传递给一个函数:
void function(int array[]);
和
void function(int *array);
是没有区别的。
2011年03月07日 12点03分
14