本文共 1352 字,大约阅读时间需要 4 分钟。
最常见的差异之一是,C允许从void*隐式转换到其它的指针类型,但C++不允许。下列是有效的C代码。从void*类型隐式转换为int*类型,但要使其在C和C++两者皆能运作,就需要使用显式转换。
c语言版本的:
#include#include #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++) { for (j = 0; j < row; j++) { free(p[i][j]); p[i][j] = NULL; } } for (i = 0; i < high; i++) { free(p[i]); p[i] = NULL; } free(p); p = NULL; return 0;}
c++版本的:
#includeusing namespace std; int main(){ int i,j,k; // p[2][3][4] int ***p; p = new int **[2]; for(i=0; i<2; i++) { p[i]=new int *[3]; for(j=0; j<3; j++) p[i][j]=new int[4]; } //输出 p[i][j][k] 三维数据 for(i=0; i<2; i++) { for(j=0; j<3; j++) { for(k=0;k<4;k++) { p[i][j][k]=i+j+k; cout< <<" "; } cout<
转载地址:http://nmzmi.baihongyu.com/