Я пытался вычислить количество элементов в массиве, и сказал, что линияКак вычислить количество элементов в массиве символов?
int r = sizeof(array)/sizeof(array[0])
даст мне количество элементов в массиве. И я обнаружил, что метод работает, по крайней мере, для массивов int. Однако, когда я пытаюсь выполнить этот код, все ломается.
#include <iostream>
#include <Windows.h>
using namespace std;
int main() {
char binaryPath[MAX_PATH];
GetModuleFileName(NULL, binaryPath, MAX_PATH);
cout << "binaryPath: " << binaryPath << endl;
cout << "sizeof(binaryPath): " << sizeof(binaryPath) << endl;
cout << "sizeof(binaryPath[0]: " << sizeof(binaryPath[0]) << endl;
return 0;
}
Когда эта программа запускается значение BinaryPath является
C:\Users\Anish\workspace\CppSync\Debug\CppSync.exe
, который, кажется, имеет размер, возвращенный SizeOf (в байтах? Биты? ИДК, может кто-нибудь объяснить это тоже?) Из 260. линии
sizeof(binaryPath[0]);
дает значение 1.
Очевидно то, делящей 260 по одному дает результат 260, WH ich не число элементов в массиве (по моему счету это 42 или около того). Может кто-нибудь объяснить, что я делаю неправильно?
У меня есть подозрительное подозрение, что на самом деле это не массив, как я думаю об этом (я родом из Java и python), но я не уверен, поэтому я прошу вас, ребята.
Спасибо!
Как я уже сказал в ответ на это: http://stackoverflow.com/questions/16049936/cant-output-int -as-result-of-sizeof Но мне сказали, что это неправильный ответ, потому что это не имеет никакого отношения к тому, почему ваш код рушился. Возможно, вы хотели бы вернуться к этому вопросу и объяснить (в случае, если кто-то другой сталкивается с подобным прогрессом), какое исправление было ... –
В совершенно другой заметке вы писали 'using namespace std;' there, или был ли он каким-то инструментом? Просто ищу информацию, никаких суждений. –
Число элементов вашего массива 'char' -' MAX_PATH'. Это так просто. – juanchopanza