How to write a macro that get array size of any data type in C

2 Answers

0 votes
#include <stdio.h>

#define ASIZE(x) (sizeof (x) / sizeof (*x))

int main(int argc, char **argv)
{
	int intArr[7] = {1, 2, 3, 4, 5};
	char *stringArr[9] = {"c", "c++", "java", "php"};
	float floatArr[5] = {3.14, 5.68};

	printf("%I64d\n", ASIZE(intArr));
	printf("%I64d\n", ASIZE(stringArr));
	printf("%I64d\n", ASIZE(floatArr));

    return 0;
}

/*
run:

7
9
7

*/

 



answered Dec 22, 2018 by avibootz
edited Dec 23, 2018 by avibootz
0 votes
#include <stdio.h>

#define ASIZE(x) (sizeof (x) / sizeof (*x))

int main(int argc, char **argv)
{
	int intArr[] = {1, 2, 3, 4, 5};
	char *stringArr[] = {"c", "c++", "java", "php"};
	float floatArr[] = {3.14, 5.68};

	printf("%I64d\n", ASIZE(intArr));
	printf("%I64d\n", ASIZE(stringArr));
	printf("%I64d\n", ASIZE(floatArr));

    return 0;
}

/*
run:

5
4
2

*/

 



answered Dec 22, 2018 by avibootz
edited Dec 23, 2018 by avibootz

Related questions

3 answers 145 views
1 answer 185 views
1 answer 223 views
1 answer 248 views
1 answer 181 views
1 answer 167 views
...