#include <stdio.h>
void fun (int q[100])
{
int y;
y = sizeof (q);
printf ("%d\n", y);
return ;
}
int main()
{
int f;
int *p;
f = sizeof *p;
printf ("%d\n" , f);
/*这里的值应该是p所指向的值,,这是一个整形,所以在32位系统上输出的是4,,,下面改变指针所指向的值的类型以验证*/
char *d;
f = sizeof *d;
printf ("%d\n", f);
/*这里将指针所指向的数据类型更改为char型,验证啦上 面的说明,这里输出是1*/
double *g;
f = sizeof *g;
printf ("%d\n", f);
/*这里输出的是8,,在32位系统中double占用8个字节*/
short *h;
f = sizeof *h;
printf ("%d\n", f);
/*这里输出的是2,,在32位系统中short占用的是2个字节*/
long *j;
f = sizeof *j;
printf ("%d\n", f);
/*long类型占用4个字节*/
float *k;
f = sizeof *k;
printf ("%d\n", f);
/*float类型占用4个字节*/
printf ("*********************************\n");
f = sizeof p;
printf ("%d\n", f);
f = sizeof d;
printf ("%d\n", f);
f = sizeof g;
printf ("%d\n", f);
f = sizeof h;
printf ("%d\n", f);
f = sizeof j;
printf ("%d\n", f);
f = sizeof k;
printf ("%d\n", f);
/*以上这几行输出的都是指向各种类型的指针本身,,,,在32位系统上输出的都是4*/
printf ("*********************************\n");
int a[100];
int l;
l = sizeof (a);
printf ("%d\n", l);
/*这一行输出的是400,,,及4*100一个4个字节a代表的是整个数组*/
l = sizeof (a[100]);
printf ("%d\n", l);
/*这里输出的是4,,a[100]只是代表第100个元素*/
l = sizeof (&a);
printf ("%d\n", l);
l = sizeof (&a[0]);
printf ("%d\n", l);
/*这里输出的是两个指向数组元素的指针,,,,指针所占的字节*/
int r[100];
fun(r);
/*这里就不同于上面400的情况,,,函数传递的是一个数组的指针*/
}
void fun (int q[100])
{
int y;
y = sizeof (q);
printf ("%d\n", y);
return ;
}
int main()
{
int f;
int *p;
f = sizeof *p;
printf ("%d\n" , f);
/*这里的值应该是p所指向的值,,这是一个整形,所以在32位系统上输出的是4,,,下面改变指针所指向的值的类型以验证*/
char *d;
f = sizeof *d;
printf ("%d\n", f);
/*这里将指针所指向的数据类型更改为char型,验证啦上 面的说明,这里输出是1*/
double *g;
f = sizeof *g;
printf ("%d\n", f);
/*这里输出的是8,,在32位系统中double占用8个字节*/
short *h;
f = sizeof *h;
printf ("%d\n", f);
/*这里输出的是2,,在32位系统中short占用的是2个字节*/
long *j;
f = sizeof *j;
printf ("%d\n", f);
/*long类型占用4个字节*/
float *k;
f = sizeof *k;
printf ("%d\n", f);
/*float类型占用4个字节*/
printf ("*********************************\n");
f = sizeof p;
printf ("%d\n", f);
f = sizeof d;
printf ("%d\n", f);
f = sizeof g;
printf ("%d\n", f);
f = sizeof h;
printf ("%d\n", f);
f = sizeof j;
printf ("%d\n", f);
f = sizeof k;
printf ("%d\n", f);
/*以上这几行输出的都是指向各种类型的指针本身,,,,在32位系统上输出的都是4*/
printf ("*********************************\n");
int a[100];
int l;
l = sizeof (a);
printf ("%d\n", l);
/*这一行输出的是400,,,及4*100一个4个字节a代表的是整个数组*/
l = sizeof (a[100]);
printf ("%d\n", l);
/*这里输出的是4,,a[100]只是代表第100个元素*/
l = sizeof (&a);
printf ("%d\n", l);
l = sizeof (&a[0]);
printf ("%d\n", l);
/*这里输出的是两个指向数组元素的指针,,,,指针所占的字节*/
int r[100];
fun(r);
/*这里就不同于上面400的情况,,,函数传递的是一个数组的指针*/
}