的I型已经看到在网络上下面的语法使用malloc
:为malloc的正确的语法不指定变量
double ***x;
x = malloc(N * sizeof(*x));
for (i = 0; i < size_y; i++) {
x[i] = malloc(N * sizeof(**x));
即,其被指出变量的类型,没有指定到malloc
:通常,我们声明指针这样的:
double ***x;
x = malloc(N * sizeof(double*));
for (i = 0; i < size_y; i++) {
x[i] = malloc(N * sizeof(double**));
据我了解,第一种方法允许quiclky改变类型指出仅仅通过例如更换“double ***x
”由“int ***x
”。
在第二种方法中,我们全部更换“double
”由“int
”到sizeof
这是第一种方法有效,如果是,它建议?
感谢您的帮助
您显示的代码存在一个小错误,它应该在第一个'malloc'调用中是'sizeof * x',第二个'sizeof ** x'中应该是'sizeof * x'。 –
这的确是一个品味问题。 'x = malloc(N * sizeof(double **));'更明确地指明你正在分配的内容(这里指向double的指针)。另一方面,如果你决定使用'float'的long double而不是double,'x = malloc(N * sizeof(** x));'不会改变。这两种方法都是有效的,没有比其他更推荐的 - 除了项目或组织中的本地规则 –
哦,并被称为[三星程序员](http://c2.com/cgi/wiki? ThreeStarProgrammer)通常不是*恭维。 –