У меня есть следующий код, интересно, в чем разница между реализацией str2
и str3
, они оба дают те же результаты, которые более подвержены ошибкам? EDIT: когда я тестировал представление str2
, я обнаружил, что один раз мой код разбился, потому что str2
был плохим указателем!разница между char [] и char * при выполнении strcpy
/* strcpy example */
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "Sample string";
char str0[] = "Sample String and more";
char* str2;
str2 = new char[40];
char str3[40];
strcpy (str2,str1);
strcpy (str3,str1);
strcpy (str2,str0);// crash happened here str2 is bad pointer!!!
printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
delete str2;
return 0;
}
Определите «более подвержен ошибкам». – immibis
'str2' более подвержен ошибкам (например, в этом случае вы забыли« удалить »его) и, вероятно, медленнее –
Просим вас пометить как C++ not C, str2 = new char [40]; is not C – BobRun