Вы можете получить такой же размер во время компиляции, как показано ниже.
Это один из способов перебора массива строк.
char* args[] = {"one", "two", "three"};
char** p = args;
size_t len = sizeof(args)/sizeof(*args);
for (int i = 0; i < len; ++i) {
printf("item %u = %s\n", i, *p++);
}
[EDIT]
я понял, это, кажется, вы имеете в виду арг в командной строке (которая заканчивается нулем);
В этом случае вы можете использовать:
int main(int argc, char** argv) {
char** p = argv;
int count = 0;
while (*p)
printf("item %u = %s\n", count++, *p++);
}
или даже
int main(int argc, char** argv) {
int count = 0;
while (*argv)
printf("item %u = %s\n", count++, *argv++);
}
Примечания Вы напечатаете ARGV [0] в приведенном выше случае. Адаптируйте к вашим потребностям.
Конечно, в этом случае у вас также есть argc, поэтому вы можете перебирать до тех пор, пока i < argc. Ваш вопрос непонятен. Вы должны предоставить полный код в своем вопросе.
Обратите внимание, что это работает только для массива указателей и не работает для указателя на указатели. –