首先,这里是一些代码:
int main()
{
int days[] = {1,2,3,4,5};
int *ptr = days;
printf("%u\n", sizeof(days));
printf("%u\n", sizeof(ptr));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法找出ptr指向的数组的大小(而不是仅仅给出它的大小,在32位系统上是4个字节)?
我已经读过C中的sizeof运算符在编译时被解释,因为在编译时编译器知道数组大小及其类型,sizeof能够计算array占用的字节数.但是sizeof如何处理以下代码:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
int s=sizeof(a);
printf("%d",s);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里的数组大小在编译时是不知道的,那么它是如何正常工作的?
const char* a;
Run Code Online (Sandbox Code Playgroud)
如何确保字符串'a'为空终止?当a ="abcd"并且我做sizeof(a)时,我得到4.这是否意味着它不是以null结尾?如果是的话,我会得到5?