<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<div class="COMMENTBOX">
<h1>Comment Box 1</h1>
<div class="share">
<li><a href="#"><button id="shareit"><h3><i class="fa fa-share-alt faa-pulse animated"></i>Share</h3></button></a>
<ul class="share-list">
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-google-plus"></i></a></li>
</ul>
</li>
</div>
</DIV>
<div class="COMMENTBOX2">
<h1>Comment Box 2</h1>
<div class="share">
<li><a href="#"><button id="shareit"><h3><i class="fa fa-share-alt faa-pulse animated"></i>Share</h3></button></a>
<ul class="share-list">
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-google-plus"></i></a></li>
</ul>
</li>
</div>
</DIV>
当我尝试编译此代码时,它会出现一些错误。我怎么解决这个问题?如何将2D char指针发送到C?中的函数?
答案 0 :(得分:3)
首先,根据目前的代码,我看到两个问题。
您正在将ptrArray
传递给函数并尝试在函数内部分配内存。请注意,C使用pass by值进行函数参数传递,因此,如果要将内存分配给ptrArray
并期望将 refeclted 返回给调用者,则不使用{{1你需要传递指向那个`ptrArray的指针。
return
你正在泄露记忆。使用ptr[i] = (char*)malloc(20 * sizeof(char));
ptr[i] = "value";
分配内存后,应使用malloc()
将数据复制到已分配的内存中。
那说了一些建议:
strcpy()
malloc()
和C
家人的回复价值see why not to cast。sizeof(char)
保证在C
中为1。不需要使用它作为乘数。malloc()
是否成功。答案 1 :(得分:2)
你可能需要这个(没有错误检查而不是调试代码):
void createDynamicArrayForChar(int dimension, char ***ptr)
{
*ptr = (char**)malloc(dimension*sizeof(char*));
for (int i = 0; i < dimension; i++)
{
(*ptr)[i] = (char*)malloc(20 * sizeof(char));
strcpy((*ptr)[i],"value");
}
}
或
char **createDynamicArrayForChar(int dimension)
{
char **ptr = (char**)malloc(dimension*sizeof(char*));
for (int i = 0; i < dimension; i++)
{
ptr[i] = (char*)malloc(20 * sizeof(char));
strcpy(ptr[i],"value");
}
return ptr;
}
int main()
{
char **ptrArray;
ptrArray = createDynamicArrayForChar(5);
...
阅读Sourav Ghosh的回答。