malloc
功能宣言:
void *malloc(size_t size);
此处,malloc
返回无效指针。因此,void
函数不返回任何内容,然后
为什么我们将malloc(函数调用)值赋给指针?
例如:
int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^
malloc()
???
答案 0 :(得分:6)
这可能是语言设计者的一个不幸选择,但是他们决定重用void
用于他们的void*
构造,这几乎颠倒了它的含义:而void
意味着&# 34;没有返回",void*
表示"返回指向任何东西的指针。"
基本上,void*
是指向未指定对象的指针。在取消引用之前,必须将其转换为指向特定类型的指针。这正是malloc
或calloc
返回的那种指针。
答案 1 :(得分:2)
无效和无效*是不同的。 虚空意味着nohting但无效*可以是任何东西。 void(void *)的指针可以被输入到任何其他指针中。
为什么malloc()返回void *?
这意味着malloc为您分配了一个内存缓冲区,您可以使用它来存储您想要的任何东西。
答案 2 :(得分:1)
尽量不要被白色空间弄糊涂。在C中,您应该以这种方式阅读声明:
if (fileType.equalsIgnoreCase("Excel")) {
Workbook wb = new XSSFWorkbook(f);
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
System.out.println("Sheet name: " + wb.getSheetName(i));
Sheet sh=wb.getSheetAt(i);
if (wb.getSheetName(i).matches("A|B|C|D"))
{
int rowCount = sh.getLastRowNum() - sh.getFirstRowNum();
for (int j = 0; j < rowCount + 1; j++) {
Row row = sh.getRow(j);
for (int k = 0; k < row.getLastCellNum(); k++) {
System.out.print(row.getCell(k).getStringCellValue() + "|| ");
}
}
}
}
将被视为 - 变量int *i;
,它为int 或提供变量*i
,它是指向int的指针。功能也一样。像i
这样的东西意味着void *fun()
是一个返回指向fun
的指针的函数。请查看this以获得更完整的答案。