Bla*_*ero 0 c arrays malloc pointers sizeof
我对这段代码的输出感到困惑:
#include <stdio.h>
#include <stdlib.h>
#define TIMING_OUTPUT_FILENAME_MAX_LENGTH 40
int main (int argc, char **argv)
{
char *timing_output_filename = malloc(TIMING_OUTPUT_FILENAME_MAX_LENGTH);
printf("requested buffer size is %ld bytes and pointer size is %ld bytes\n",
sizeof(timing_output_filename),
sizeof(*timing_output_filename));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
requested buffer size is 8 bytes and pointer size is 1 bytes
Run Code Online (Sandbox Code Playgroud)
它应该给我40个字节?我错过了什么吗?
它应该给我40个字节?
不,这不对.
在您的代码中,timing_output_filename指针和sizeof指针上的using 运算符产生指针本身的大小,而不是指定内存(指针)的大小.
在您的代码中,sizeof(timing_output_filename)它是相同的sizeof(char *),因此它会产生指向char平台的指针大小.
注意:sizeof生成类型的结果size_t,因此您应该使用%zu格式说明符来打印结果.
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |