变量思考

2016-08-24  本文已影响0人  不高兴325
int i=3;

字面量3直接保存在stack上,那变量名i存储在哪?
猜想:
与内存结构有关。

int  a[10]={0};
printf("%d",sizeof(a));

变量的大小、类型是否有一张表存储?
猜想:
在编译期间根据类型决定大小。

int a[10]={0};
printf("a=%p",a);        
printf("&a=%p",&a);  
//------------------------
printf("(a+1)=%p",(a+1));        
printf("(&a+1)=%p",(&a+1));  

a与&a结果相同,而(a+1)与(&a+1)结果不同。

//c语言中,将数组作为参数传入某方法中,在该方法中是无法知道该数组的长度。必须将数组的长度也作为参数传入方法。
//但在C#语言中,将数组传入某方法,可以在该方法中访问到该数组的所有信息。

问:
为何C#中能访问到数组的长度等信息?作为一个类封装?传入到方法中的是什么?
猜想:
c语音中传入的数组的首地址,即a[0]的内存地址。
而C#中传入的引用?

上一篇下一篇

猜你喜欢

热点阅读