Нет, оба значения
(strlen(myString) + 1) * sizeof(char)
и
sizeof(myString)
не всегда равны.Если массив char myString
содержит количество элементов и отличается от упомянутого индекса массива, то strlen(myString)
и sizeof(myString)
будут отличаться.Например, в следующем случае
char myString[10];
и (strlen(myString) + 1) * sizeof(char)
, и sizeof(myString)
приведут к одинаковому результату.Но если другой случай, например
char myString[10] = "Hello";
, результаты будут другими.
Также я бы предпочел это
(strlen(myString) + 1) * sizeof( *myString)
, а не
(strlen(myString) + 1) * sizeof(char)
как sizeof( *myString)
выглядит обобщенно.
Примечание , если myString
имеет тип char*
, то есть тип указателя как
char *myString = "some string with weird characters";
или используется в качестве аргументов функции удерживается как
void myTestFunc(char *myString) { }
, тогда sizeof(myString)
не будет работать, strlen(myString) + 1) * sizeof( *myString)
предпочтительнее.