我试图找出一个数组的长度,但我得到奇怪的数字......
#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.
我假设我会得到两个相似的大小,所以它显示我的数组中有一个元素.
我究竟做错了什么?
sizeof(coordinatesMainArray)给你coordinatesMainArray变量的大小- aCoordinate*
sizeof(coordinatesMainArray[0])给出coordinatesMainArray数组中第一个元素的大小- 一个Coordinate实例.sizeof(*coordinatesMainArray)本来就相当于此.
顺便说一句,没有办法使用指针来确定数组的大小.您需要单独存储数组大小,并将此数组指针传递给其他函数,或者保证数组以已知的终结符值结束(例如NULL)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |