首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于sizeof的疑问,该怎么解决

2012-02-17 
关于sizeof的疑问void main(){int a[4]printf(%d\n,sizeof(a))printf(%d\n,sizeof(int [4]))printf

关于sizeof的疑问
void main(){
int a[4];

printf("%d\n",sizeof(a));
printf("%d\n",sizeof(int [4]));
printf("%d\n",sizeof(int *[4]));
printf("%d\n",sizeof(int (*)[4]));
printf("%d\n",sizeof(int (*)()));
}
以上程序若在16位的TC中运行,结果为 8 8 8 2 2
我想请教一下倒数第二行的sizeof(int (*)[4])是什么意思?不明白。

[解决办法]
指向一个大小为4的一维数组的指针
[解决办法]
int *[4]是一个数组 (四个整型指针)
int (*)[4]是一个指针(指向一个指向整型数组的首地址)
[解决办法]
int* [4]是一个数组,一个四个元素,每个元素是一个指针,所以大小就是4*2=8;
int (*)[4]是一个指针,指向一个有四个整形元素的数组,所以大小就是2;

[解决办法]
int *[4] 指针数组
int (*)[4] 指向数组的指针
不确定,偶也忘了...
[解决办法]
应该是这样的
[解决办法]
复杂类型的说明:从变量名处起,根据运算符优先级结合,一步一步分析,下面以一个比较复杂的类型( int * (*p(int))[ ] )为例:
第一步,p先与()结合,说明是一个函数,第二步,()内有一个int,说明函数有一个形参为int型,第三步与*结合,说明返回的是一个指针变量,第四步与[ ]结合,说明该指针变量指向数组,第五步再与*结合,说明数组中的元素为指针型,第六步说明数组中的指针元素的类型为int型,完毕,所以这是一个返回一个由整型指针变量组成的数组的指针变量的函数.

[解决办法]
int (*P)[4]

首先变量与P结合,说明是一个指针,然后再与[]结合说明指针所指向的是一个数组的首地扯,然后数组是储存INT型的,所以,这是一个储存INT型数组的指针
[解决办法]
我想请教一下倒数第二行的sizeof(int (*)[4])是什么意思?不明白。
---------------------
int (*)[4]; //是一个数组指针;
[解决办法]
int *p[n]; 它的类型是 int[n] 
int (*p)[n];它的类型是int(*p)-->即 int*

有括号总是要"冲在前面的",当每个都想当前锋时,第一个报名总是得到更多的优先权;

看看汇编吧,或者是高级语言与低级语言的对应,会了解更多
[解决办法]
sizeof(int (*)[4]);

首先分解int (*)[4];此为一个数组的指针,其一维的步长为4;
所以sizeof的是一个指针...

热点排行