最常见的差异之一是,C允许从void*隐式转换到其它的指针类型,但C++不允许。下列是有效的C代码。从void*类型隐式转换为int*类型,但要使其在C和C++两者皆能运作,就需要使用显式转换。
c语言版本的:
#include <stdio.h>
#include <stdlib.h>
#define high 2
#define row 3
#define col 4
int main()
{
int i, j, k; // p[2][3][4]
int*** p;
p = (int***)malloc(sizeof(int**) * high);
for (i = 0; i < high; i++)
{
p[i] =(int **) malloc(sizeof(int*) * row);//new int *[3];
for (j = 0; j < row; j++)
p[i][j] =(int*) malloc(sizeof(int) * col);//new int[4];
}
//输出 p[i][j][k] 三维数据
for (i = 0; i < high; i++)
{
for (j = 0; j < row; j++)
{
for (k = 0; k < col; k++)
{
p[i][j][k] = i + j + k;
printf("%d ", p[i][j][k]);
}
printf("\n");
}
printf("\n");
}
// 释放内存
for (i = 0; i < high; i+&