作业帮 > 综合 > 作业

如何计算指向数组的指针所含元素多少

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 03:24:13
如何计算指向数组的指针所含元素多少
ù笮?字节),后者求的是指针指向的一个元素的大小(如果p指向int数组,就是4字节,类似指向char数组就是1字节).
终于找到解决方法了,函数传入指针,那么在调用该函数时,肯定会指定buffer大小的,我们可以把buffer的大小作为该函数的一个参数,这样,我们就可以采用sprintf_s了.
同时,考虑到不同平台兼容问题(VC6.0 VS2005)的问题,我们可以将sprintf与sprintf_s封装成自己的函数,例如取名为yg_sprintf_s(呵呵),在内部我们判断编译器的版本_MSC_VER = 1400,使用的时VC8.0即VS2005.sprintf_s内部实际上是利用vsprintf_s和vsnprintf_s(根据目的buffer长度截断,不会造成系统崩溃)来实现的,对于format...这样的参数是利用vslist() vs_start() vs_end()函数来进行处理的.
附:csdn上存在类似的讨论内容:(1)int *p,*q;
如果是的话,下面这个方法就可以帮你了
p - q 就能知道你现在已经向前移了多少个元素,再把a减去向前移的元素不就出来了
示例程序如下
#include <malloc.h
#include <stdio.h
int main(int argc,char* argv[]){int a = 10;
int *p,*q;
p = q = (int *)malloc(a * sizeof(int));
p = p + 3;
printf( "%d ",a - (p - q));free(q);return 0;}(2)在c中总是要自己记录指针中内存的大小.
比如你使用:
p=(int*)malloc(a*sizeof(int)),
那么使用一个全局变量记录a不久可以了.
如果要产生很多这样的数组,使用全局变量不方便,可以采用一个变通的方法,比如:
p=(int *)malloc( (a+1)*sizeof(int));*p=a;p++;那么以后使用指针时,*(p-1)就表示这块内存的大小.