(1) с strlen
, но без добавления 1, определенно неверно.Если вы добавите 1, будет иметь дополнительное преимущество, что он также работает для указателей, а не только для массивов.
С другой стороны, (2) предпочтительнее, если ваша строка на самом деле является массивом, так какв результате получается константа времени компиляции, а не вызов strlen
(и, следовательно, более быстрый и меньший код).На самом деле современный компилятор, такой как gcc
, может, вероятно, оптимизировать strlen
, если он знает, что строка постоянна, но компилятору может быть сложно определить это, поэтому я всегда буду использовать sizeof
, когда это возможно.*