tom*_*ies 0 c visual-studio-2010
我有一个链表(Tproduct),我想创建一个指向这个的指针数组,例如:
e1 -> e2 -> e3 -> e4 -> e5 -> e6
| | |
v v v
p[0] p[1] p[2]
Run Code Online (Sandbox Code Playgroud)
我的声明如下:
Tproduct *arrayOfPointers = (Tproduct*)malloc(N*sizeof(Tproduct*));
Run Code Online (Sandbox Code Playgroud)
这是对的吗?我不确定它是Tproduct*arrayOfPointers还是Tproduct arrayOfPointers.
问候.
如果你想要一个指针数组,你应该这样做:
Tproduct **arrayOfPointers = (Tproduct**)malloc(N*sizeof(Tproduct*));
Run Code Online (Sandbox Code Playgroud)
这段代码正是你想要的 - 为N Tproduct指针分配内存.
你的类型arrayOfPointers是一个指向Tproduct-所以,你可以操纵它像1对象的数组,而不是像指针指向对象的数组.
1它仍然是指针,而不是数组.这就是为什么喜欢.
如果你想要一个对象数组,你应该为N对象而不是N指针分配内存:
malloc(N * sizeof(Tproduct))
// ^^^^^^^^ - Note: not a pointer
Run Code Online (Sandbox Code Playgroud)现在我想写一个函数返回这种类型的数组.什么是原型?
Tproduct** fill();
Run Code Online (Sandbox Code Playgroud)
应该做的工作.功能示例:
Tproduct** fill()
{
Tproduct **arrayOfPointers = (Tproduct**)malloc(N*sizeof(Tproduct*));
// do some stuff
return arrayOfPointers;
}
Run Code Online (Sandbox Code Playgroud)
但我建议将你的功能重命名为,比方说allocate_array或类似的东西.fill并不意味着分配.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |