我已经读过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)
这里的数组大小在编译时是不知道的,那么它是如何正常工作的?
我有一个缓冲区,想要做一个测试,看看缓冲区是否有足够的容量,我可以找到我可以添加到缓冲区的元素数量.
char *buffer = (char *)malloc(sizeof(char) * 10);
Run Code Online (Sandbox Code Playgroud)
做一个
int numElements = sizeof(buffer);
Run Code Online (Sandbox Code Playgroud)
不回10,有关如何实现这一点的任何想法?
我试图找出一个数组的长度,但我得到奇怪的数字......
#include <stdio.h>
#include <stdlib.h>
const int numOfCoordinates = 100;
typedef struct {
int x;
int y;
int counter;
} Coordinate;
Coordinate *coordinatesMainArray;
Coordinate endPoint;
Coordinate startPoint;
int main(int argc, const char * argv[])
{
endPoint.x = 8;
endPoint.y = 3;
endPoint.counter = 0;
startPoint.x = 1;
startPoint.y = 4;
coordinatesMainArray = malloc(sizeof(Coordinate) * 1);
coordinatesMainArray[0] = endPoint;
int a = sizeof(coordinatesMainArray);
int b = sizeof(coordinatesMainArray[0]);
int coordinatesMainArrayLength = (a / b);
Run Code Online (Sandbox Code Playgroud)
这是我的代码,直到部分我需要coordinateMainArray的长度.但我得到a = 8和b = 12.
我假设我会得到两个相似的大小,所以它显示我的数组中有一个元素.
我究竟做错了什么?