c/c++语言开发共享‘sizeof’无效应用于不完整类型’int ‘访问指针指向的整数数组时

我正在尝试学习C中的指针并且正在编写这个小整数数组指针练习,但是遇到了一个无效的sizeof应用程序到不完整类型的int[]问题。 请告诉我哪里出错了以及如何解决。 谢谢。

 #include  int intA[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int intB[]; void int_copy(const int *source, int *destionation, int nbr) { int i; for(i=0;i<nbr;i++) { *destionation++ = *source++; } } int main() { int *ptrA = intA; int *ptrB = intB; int sizeA = sizeof(intA); int nbrA = sizeof(intA)/sizeof(int); printf("nn"); printf("[Debug]The size of intA is:%dn", sizeA); printf("[Debug]That means the number of elements is:%dn", nbrA); printf("nnThe values of intA are:n"); int i; for(i=0;i%dn", i, intA[i]); } int_copy(ptrA, ptrB, nbrA); int sizeB = sizeof(intB); int nbrB = sizeof(intB)/sizeof(int); printf("nn"); printf("[Debug]The size of intB is:%dn", sizeB); printf("[Debug]That means the number of elements is:%dn", nbrB); printf("nnThe values of intB are:n"); for(i=0;i%dn", i, *ptrB++); } } # cc -g -o int_copy int_copy.c int_copy.c: In function 'main': int_copy.c:36: error: invalid application of 'sizeof' to incomplete type 'int[]' int_copy.c:37: error: invalid application of 'sizeof' to incomplete type 'int[]' 

我观察到的奇怪的事情是当我运行gdb时,我监视到复制函数int_copy运行了9次似乎是正确的,但是复制函数之后的intB的打印只显示该数组中的一个项目。

我现在仍在努力争取指针,所以请帮助我并原谅我的无知。 非常感谢你。

    intB基本上是一个指针,其上的sizeof将与int上的sizeof相同,这就是print只出现一次的原因。 intA是一个已知大小的数组,因此sizeof有效。

    你需要记住sizeof不是一个运行时调用,虽然它看起来可能是语法上的。 它是一个内置的运算符,在编译时返回类型的大小(以字节为单位),在编译时intB是一个指针,该指针稍后应指向新分配的数组。

    你在这里也遇到了麻烦,因为IntB没有大小,所以int_copy真的不起作用。 没有地方可以复制整数!

    声明一个数组时,你必须在[]中给出大小或者使用带有值的初始值设定项,这样编译器就可以对它们进行计数并计算出它自身的大小。

    实际上你的int intB[]; 语句无效,您使用哪个编译器?

    另外,请注意数组和指针实际上并不相同。 但是,您可以在对需要指针的函数的调用中使用数组句柄,因此您可以将intA赋予int_copy函数,而无需将其复制到指针。

      以上就是c/c++开发分享‘sizeof’无效应用于不完整类型’int ‘访问指针指向的整数数组时相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522905.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐