一个关于c语言sizeof函数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:44:55
int *x=malloc(5*sizeof *x)
是不是相当于int *x=malloc(5*sizeof(int))?
int **x=malloc(5*sizeof *x)
是否相当于 int **x=malloc(5*sizeof(int *))?

是,不过最好写成sizeof(*x) 虽然按C标准sizeof只有用于类型的时候需要括号,但是直接给表达式如果不用括号有的编译器会编译出古怪的东西。

你最好能改一下写法
int *x;
x=(int *)malloc(5*sizeof(x));=== x=(int*)malloc(5*sizeof(int))
int **x;
x=(int **)malloc(5*sizeof(x)); == x=(int**)malloc(5*sizeof(int*))

一个int型和一个int*型 都占用了内存的4个字节