c++嵌套c循环嵌套编程常见错误?

在C中有指向指针的指针时您必須知道数据将如何使用并在内存中布局。现在第一点是显而易见的,并且对于任何变量都是正确的:如果您不知道某个变量将如何在程序中使用为什么要使用它呢?-)第二点比较有趣。

在最基本的级别上指向类型的指针T指点1类型对象T例如:

现在,pi指向一个int.如果您愿意您可以使指针指向许多这样的对象中的第一个:

pa现在指向10序列中的第一个(连续的)。int值并假设malloc()成功,pb指向另一组10的第一组(同样是连续的)intS.

洳果有指向指针的指针则同样适用:

假设malloc()成功,现在你有了ppa指向10个连续序列中的第一个int *价值

所以,当你这么做的时候:

...以上是i我们想要的数据它可以是一个常量,也可以是一个变量取决于i或者月亮的相位,或者随机数或者其他任何东西。主要要注意的是CR_MULTIBULK_SIZE打电话給malloc()在c循环嵌套中当每个malloc()将返回一个连续的内存块,相邻的内存不能保证跨malloc()打电话换句话说,第二个malloc()调用时不能保证返回一个指针,該指针从前面的malloc()数据结束了

为了使事情更加具体,让我们假设CR_MULTIBULK_SIZE在图片中您的数据可能如下所示:

*价值。第一个指针tmp[0],指向连续块3char價值。同样tmp[1]tmp[2]指向5和2charS分别。但记忆指向tmp[0]tmp[2]并不是一个整体的毗连

memcpy()复制连续内存,你想做的事情不能由一个人来完成memcpy()而且你需要知噵每个tmp[i]分配了。因此一般来说,您想要做的事情需要一个c循环嵌套:

如前所述您可以调用memcpy()在c循环嵌套内部,所以您不需要在代码中嵌套c循环嵌套(最有可能memcpy()是用c循环嵌套实现的,所以效果就像有嵌套c循环嵌套一样)

现在,如果您有如下代码:

也就是说您为一个中的所囿指针分配了连续的空间。malloc()调用然后可以在代码中不使用c循环嵌套复制所有数据:

从上面看,简单的答案是如果你有不止一个malloc()分配内存tmp[i],则需要一个c循环嵌套来复制所有数据

我要回帖

更多关于 嵌套循环 的文章

 

随机推荐