不使用sizeof而使用指针得到数组长度

定义数组和指向其的指针:u8 Rcv_Buffer[210]; u8 *PointToRcvBuf;//用来指向接收的数据缓存赋值:PointToRcvBuf=Rcv_Buffer;Rcv_Buffer数组中的值,是动态改变的,里面存了多少个数也是会改变的。最终却在如图的函数里到了数组中实际存储了多少个数,请问是如何做到的?有这样的用法?(函数的第一个参数就是上面的PointToRcvBuf)

数组int a[4]; sizeof(a)=4*4=16字节 (int为4个字节)
int *p=a; sizeof(p)=4字节
对数组应用sizeof,可以得到整个数组分配的字节数(存储全部数据占用的内存字节数)
对指针应用sizeof,只是得到分配给用来存储一个地址值的指针所用的字节数,即4个字节。
(上面都是在32位编译系统)

C++中sizeof得到的是字节数,也就是你所说的“长度单位”

求大小,可以手动计算,需要知道数据类型,是否有字节对齐(编译器选项,也可代码控制和切换)。我以前做过统计结构体大小的小程序,同时计算每个成员变量的相对地址。
温馨提示:内容为网友见解,仅供参考
无其他回答

C++ 怎么得到字符串指针指向的内存块的大小?
唯一的解决办法就是增加一个长度参数 在字符串指针指向的内容是空字符结尾的字符串的时候,可以使用strlen来获取指向字符串的大小 但是实际指向内存块的大小,是无法知道的。这是因为指针在作为参数传递的时候,只传过来了地址值,而没有传过来任何长度信息 实际上指针的长度信息是编译阶段获取的,而函数参...

如何获得指针所指向的数组大小
对于数组int arr[]={1,2,3,4};可以用len=sizeof(arr)\/sizeof(int);得到其大小len。字符数组(一定是以\\0结尾的)除了上面那个方法外,还可以通过指针用循环判断一下 int len=0;while (*p != '\\0')++len;一般来说,不能用指针去判断数组到底有多少个元素 ...

c++ 数组用指针方式传递给函数以后如何获得数组的长度?
将数组作为一个参数传出去,那么他就会“退化”成一个指针类型,进而失去“数组的属性”。(这里的数组不是new出来的)这里的“属性”指的是数组可以使用sizeof(Array)\/sizeof(Array[0])的方法获得其长度的方法的属性。要在一个函数中得到一个数组的长度,你应该这个数组作为一个引用传出去,那样,就能...

关于sizeof 长度计算问题。
指针,不管是什么类型的,都是4个字节(这个还有看编程器,不同的编程器或者系统可能长度不同)数组,规定长度的,就是那个长度,不规定长度的,是所初始化时后面数据的长度 特殊字符或者特殊的表示方式占用的字符要记清,如\\t占8个字节,\\65就是A,占一个字符\\0x125占一个字节等等 其实你的这个...

函数中的指针如何用sizeof
没有什么办法 sizeof在编译的时候完成计算,而不是在运行时 在编译的时候sizeof(opt2),opt2是指针,所以只能得到指针的长度 可以有替代的办法 1、test函数增加一个参数len,表示长度, test(char *opt2, int len)2、如果你的opt2中没有'\\0'字符,那么可以通过strlen(opt2)来获取长度 ...

sizeof和strlen最全区别,以及指针和数组运算解析
首先,sizeof是C语言的内置运算符,用于获取指定类型或结构的字节大小,返回值为size_t类型。它适用于数组、函数、指针和对象,但不适用于动态分配的数组或外部数组。当应用于字符串时,sizeof会计算整个字符串(包括空字符'\\0')的大小。相比之下,strlen是C库函数,定义在string.h头文件中,用于计算...

c++ 能否从一个char数组的指针知道这个数组的大小?
不能,char *s;s是个字符指针,我们只知道它能指向一个字符,除此之外,可以说一无所知;s = "abcd";s = "abcdefghijk";s = "abcdefghijklmnopqrstuvwxyz";上面的s都是指向字符'a';你认为,除了知道s,指向 'a',我们还能知道的更多吗??甚至 char a = 'a', *s = &a;这里的s也...

c++高手 关于sizeof和strlen的不同
首先:sizeof得到是变量或者类型的长度,对于变量来说,得到的是其分配的内存的大小,其是以字节为单位的,而对于数组来说, 可以用数组名作为其参数,也可以用数组中的某一个单元作为其参数,但此时计算出来的长度是不同的,例如:int b;char a[10];char *p=a;b = sizeof a;\/\/b=10现在计算...

对于一个指针p,里边记录他的内存长度吗?例如一个数组的指针;
数组名有他的长度 用sizeof可以看到数组占用的内存 指针就不行了 指针类型在内存占4个字节[假设是4个字节]存一个无符号整型 代表指向的地址 没有记录内存长度的

c语言中的sizeof()是如何分辨数组名和指针的?
sizeof函数并不区分数组名与指针,它只是简单告诉你操作数的大小。例如,给数组时,它告诉你数组的大小;给指针时,则告诉你指针的大小。关键在于void printSize(int a[10])中的a,其实它的类型是被调整为指向int的指针,而非数组。当声明参数为「某某类型的数组」时,其会被调整为「某某类型的指针」...

相似回答