搜索
查看: 2058|回复: 5
打印 上一主题 下一主题

有关各种类型字节数&sizeof函数

[复制链接]
跳转到指定楼层
楼主
发表于 2013-6-9 16:19:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做了一个解释c中常用类型的字节长度,以及sizeof函数自变量内容的小程序,供大家使用!
[code=Cpp width=740px]#include <stdio.h>
#include <stdlib.h>
struct Unit
{
char subject[20];
int score;
struct Unit * next;
};
void line()
{printf("\n");}

int main()
{
char b[4];
int a[4];
float c[4];
double d[10];

void *pvoid;
char *pchar;
int *pint;
float*pfloat;
double*pdouble=d;

system("title 有关各种类型字节数&sizeof函数");
printf("有关各种单独类型字节数如下:");
printf("\nchar:\t\t%d",sizeof(char));
printf("\ncharb[4]:\t%d",sizeof(b));
line();
printf("\nint:\t\t%d",sizeof(int));
printf("\ninta[4]:\t%d",sizeof(a));
line();
printf("\nfloat:\t\t%d",sizeof(float));
printf("\nfloatc[4]:\t%d",sizeof(c));
line();
printf("\ndouble:\t\t%d",sizeof(double));
printf("\ndoubled[4]:\t%d",sizeof(double[4]));
line();
printf("\nvoid*:\t\t%d",sizeof(pvoid));
printf("\nchar*:\t\t%d",sizeof(pchar));
printf("\nint*:\t\t%d",sizeof(pint));
printf("\nfloat*:\t\t%d",sizeof(pfloat));
printf("\ndouble*:\t%d",sizeof(pdouble));
printf("\n&d[4]:\t\t%d",sizeof(&d[4]));

printf("\n\n有关struct的类型字节数如下:\n");
struct Unit *p=malloc(sizeof(struct Unit));
printf("对于\nstruct Unit\n{\nchar subject[20];\nint score;\nstruct Unit * next;\n}\n来说\n\n地址:\n",sizeof(float));

printf("p:\t\t%d \np+1:\t\t%d \n\nsubject:\t%d \nscore:\t\t%d \nnext:\t\t%d \n\n",p,p+1,&p->subject,&p->score,&p->next);
printf("subject+1:\t%d\nscore+1:\t%d\nnext+1:\t\t%d\n",(&p->subject)+1,(&p->score)+1,(&p->next)+1);


printf("字节数:\np:\t\t%d \nint:\t\t20 \nscore:\t\t%d \n*next:\t\t%d\n",sizeof(*p),sizeof(int),sizeof(p->next));


printf("\n\n有关sizeof函数如下:\n\ndouble d[10];\ndouble * pdouble = &d[1];\n\n");
printf("sizeof(double):\t\t%d\n",sizeof(double));
printf("sizeof(double[10]):\t%d\n",sizeof(double[10]));
line();
printf("sizeof(d[2]):\t\t%d\n",sizeof(d[2]));
printf("sizeof(d):\t\t%d\n",sizeof(d));
line();
printf("sizeof(pdouble):\t%d\n",sizeof(pdouble));
printf("sizeof(*pdouble):\t%d\n",sizeof(*pdouble));
printf("sizeof(pdouble[4]):\t%d\n",sizeof(pdouble[4]));
line();
printf("即sizeof的自变量可是\n\t\t类型double\n\t\t类型数组double[10]\n\t\t变量d[2]\n\t\t数组名d\n\t\t被引用的指针*pdouble\n\t\t指针数组pdouble[4]\n",sizeof(pdouble[4]));



system("pause");
return 0;
}
[/code]

有关各种类型字节数&sizeof函数.rar

8.4 KB, 下载次数: 13

exe文件

沙发
发表于 2013-6-9 17:37:58 | 只看该作者
这个可以直接看limits.h
还有楼主你漏了最经典的sizeof('A');
板凳
发表于 2013-6-9 17:39:38 | 只看该作者
还有这句
  1. printf("\ndoubled[4]:\t%d",sizeof(double[4]));
复制代码
写错了吧
地板
 楼主| 发表于 2013-6-9 18:15:44 | 只看该作者
rosynirvana 发表于 2013-6-9 17:37
这个可以直接看limits.h
还有楼主你漏了最经典的sizeof('A');

这个谁有心情去看啊,,而且那句没写错,呵呵
5#
发表于 2013-6-9 18:47:46 | 只看该作者
好高级的感觉,唉新手飘过(完全不懂)!
6#
发表于 2013-6-9 21:58:16 | 只看该作者
saidline 发表于 2013-6-9 18:15
这个谁有心情去看啊,,而且那句没写错,呵呵

这里又不要输出前面定义过的数组的大小了?

还有几点
1.sizeof不是函数
2.sizeof计算后得到的类型不是int,所以也不该用%d输出
3.指针不应该用%d输出
4.48行和68行的printf参数过多
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表