计算数组的字节总数(32位计算机)

供稿:hz-xin.com     日期:2025-01-14
char *a[5]占多少个字节?在32位机下指针都为4字节,但是这个指针数组的字节数为多少?为什么

A错误,指针也是一个变量啊,变量赋值就可以运行啊,对于指针变量,注意:赋的值必须是已经映射的虚拟地址,根指向什么数组元素没有必然关系。B正确,sizeof(数组名)是计算的数组容量,就是数组元素个数*每个元素字节数,sizeof(指针变量名),计算的指针变量类型的的size,结果是4.C正确,inta[5];int*p=a;*p++,*(p++),*(++p)是可以的D正确,数组country[]元素存放的每个字符串的首地址。

不是。通常数组的大小(长度)指的是数组中元素的个数,而不是它所占空间的大小。
如果数组的基类型T满足sizeof(T)的值为1,那么数组的大小和它所占空间的大小一致,否则两者的值不相等。
例如
设声明为T a[10];
T是int时
sizeof(a)等于10*sizeof(int),但不等于10(如果是32位系统,前者等于40,因为int占用空间等于机器字长,这里sizeof(a)等于4);
T是char时
sizeof(a)、10*sizeof(char)相等,都等于10,因为sizeof(char)等于1。
sizeof运算符返回一个量或类型占用的空间大小(字节数),返回值是整数,建议LZ可以通过
printf("%d
",sizeof(a));
这样的方式实际测试一下。
----
[原创回答团]

这牵扯到字节对齐的知识吧。32位机默认是4字节对齐,即所有的变量字节加起来要能被4整除。short是2字节对齐,char是1字节对齐,long是4字节对齐。即short必须以被2整出的地址开始,char以被1整除的地址开始,long以被4整除的地址开始。第一句字节是2,char可以以任意地址开始,故第2句后字节数应该是2+20=22,前两个要与第3个对齐,由于22不能被4整除,所以要添加两个空字节,以24地址开始,第三句时为24+4x8=56,总字节数应该是56

看谭浩强教授的《C程序设计》
a是数组,a数组的地址也就是数组中第一个元素的地址为a[0],如果想算a[i]的地址套下面的公式:a[0]+i*d,其中d为该数组类型所占的字节数,Turbo C++中int占二字节,而VC++中是4字节,现在一般不用Tubro C++了,d是4个字节,所以a[4]=a[0]+4*4


这是个union还是struct?

各个数据类型的字节长度
在计算机中,数据类型是一个重要的概念。它表示数据的类型及其存储方式,是编程语言中的一个核心概念。计算机中有许多不同的数据类型,例如整数、浮点数、数组、结构体等等。对于每种数据类型,它们在计算机中所占用的字节长度不尽相同。在本文中,我们将从多个角度分析各个数据类型的字节长度。各个数据类型...

数组所占的字节数
2. 数组的对齐方式除了数据类型以外,数组在占据内存空间时还需要遵循一种对齐方式。在计算机内存中,所有数据的存储都有一定的对齐要求,这是因为处理器读取内存时需要按照一定的规律进行读取,以提高读取速度。对于数组而言,它的对齐方式决定了每个元素所占用的字节数。例如,一个32位的处理器需要按照4...

以下为Windows NT下的32位C++程序,请计算sizeof的值. 向高手求助~_百度...
char str[]= “Hello” ;char *p= str ;int n= 10;请计算 sizeof (str )= 6;\/\/计算str数组大小,注意str是数组而不是指针,所以是6,包括’\\0‘sizeof ( p )=4;\/\/p为指针类型,在32位环境下,自然是4个字节了 sizeof ( n ) =4;\/\/n为int类型数据,在32位环境下,也...

关于sizeof问题,这个程序输出结果怎么解释??求高手指教啊!谢谢了...
strlen(a)的结果也是11 指针变量的sizeof 学过数据结构的你应该知道指针是一个很重要的概念,它记录了另一个对象的地址。既然是来存放地址的,那么它当然等于计算机内部地址总线的宽度。所以在32位计算机中,一个指针变量的返回值必定是4(注意结果是以字节为单位),可以预计,在64位系统中指针变量的...

在C语言中"char *p"占用多少内存空间
拿32位计算机来说,指针所占的内存空间一般为4个字节,不管char *还是int *抑或是float *,都是4个字节。程序员可以使用sizeof运算符获取数据类型或者某个变量的内存所占字节数。比如 printf("%d\\t%d\\t%d\\n", sizeof(char *), sizeof(int *), sizeof(float *));...

C语言中的 sizeof(x)\/sizeof(int); 其中sizeof是什么作用?
sizeof是计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示(当然用在字符数组计算"\\0"的大小)。在32位的系统中,sizeof(int)的值为4 如果x是int型的数组,则sizeof(x)\/sizeof(int)代表x的位数。希望拿过对你有所帮助。

C语言求整数长度或多少位
十进制数字个数 和长度 有多种方法 算得。下面用两种方法计算。负数有个符号位,长度比位数多 m=1。占内存的大小用sizeof(int) 可得,通常 32位机为4字节,64位机为8字节。例如:include <stdio.h> int main(){ int a=123456;int n,m=0;char s[60];if (a<0) m=1;sprintf(s,"%d"...

1字节有多少位
即:(94*(区号-1)+位号-1)*一个汉字字模占用字节数,而按每种汉字库的汉字大小不同又会得到不同的结果。以16*16点阵字库为例,计算公式则为:(94*(区号-1)+(位号-1))*32。汉字库文该从该位置起的32字节信息即记录了该字的字模信息。

假定a为一个整形数组名,则元素a[4]的字节地址为___.
所以:a[4]的字节地址 = a[0]的地址 +4 * 数组元素类型所占的字节数 = a + 4 * 整形类型所占的字节数 = a + 4 * 4 = a + 16 严格来说,此题应给出计算机的字长。16位和32位的计算机结果就不同了。上面的结果是32位的计算机的结果,此时整形类型所占的字节数为4,若是16位的...

数据类型所占字节
在计算机中,数据被处理和储存于不同的数据类型之中。每个数据类型都有一个唯一的标识符,这个标识符规定了该数据类型所占用的内存大小。数据类型所占字节数据类型通常分为基本数据类型和复合数据类型。基本数据类型指那些不能再被分解成更小的类型的数据类型,如整数、浮点数和字符等;而复合数据类型则由...