我有一个struct定义:
struct Query {
int *pages;
int currentpage;
};
struct Query *new = malloc(sizeof(struct Query));
new->pages = malloc(sizeof(int) * 4);
Run Code Online (Sandbox Code Playgroud)
然后检查大小new->pages以确保大小为4:
int size = sizeof(new->pages)/sizeof(new->pages[0]);
Run Code Online (Sandbox Code Playgroud)
但是,size保持回归2而不是4.
谁会知道我可能做错了什么?
谢谢你的帮助.
你的期望是错误的.
sizeof(new->pages) 在
int size = sizeof(new->pages)/sizeof(new->pages[0]);
Run Code Online (Sandbox Code Playgroud)
不返回int元素总数.只是int指针(int*)的大小.由于您的平台sizeof(int*)是8并且sizeof(int)是4,它返回2.
顺便说一下,你应该使用size_tfor size作为sizeof运算符返回a size_t并且%zu是printf()要打印的格式说明符(in )size_t.