мне интересно, что этот синтаксис strcpy()
делает в строке 65 и 66:Что делает `strcpy (x + 1, SEQX)` do?
24 #define SEQX "TTCATA"
25 #define SEQY "TGCTCGTA"
61 M = strlen(SEQX);
62 N = strlen(SEQY);
63 x = malloc(sizeof(char) * (M+2)); /* +2: leading blank, and trailing \0 */
64 y = malloc(sizeof(char) * (N+2));
65 strcpy(x+1, SEQX); /* x_1..x_M now defined; x_0 undefined */
66 strcpy(y+1, SEQY); /* y_1..y_N now defined; y_0 undefined */
Я знаю, что копирование SEQX
и SEQY
в x
и y
, но я не понимаю, что делает +1
делать? Каково официальное название этого типа операции?
Название может быть «указательным арифметическим». 'x + 1' означает адрес элемента массива после того, который' x' является адресом. –
@MattMcNabb, поэтому 'x' здесь указатель? – olala
Если это все код, то 'x [0]' и 'y [0]' являются нежелательными. Он почти выглядит/звучит как его отсутствие назначения в 'x [0]', например 'x [0] = ''' (инициализировать как пробел). – jww