url ='http://www.test.com/page/TEST2'.split('/')[4]
print url
Выход: TEST2
.
Мой любимый:
#include <stdlib.h>
struct st *x = malloc(sizeof *x);
Обратите внимание, что:
x
должен быть указателем struct st* x = malloc( sizeof( struct st ));
Полагаю, когда вы вызываете sizeof
для типа struct
, C рекурсивно вызывает sizeof для полей struct
. Таким образом, struct st *x = malloc(sizeof(struct st));
действительно работает, только если struct st
имеет фиксированный размер. Это важно только в том случае, если в вашей структуре есть что-то вроде строки переменного размера, и вы НЕ хотите каждый раз указывать максимальную длину.
В общем,
struct st *x = malloc(sizeof(struct st));
работает. Иногда вы можете столкнуться с структурами переменного размера или «абстрактными» структурами (например, абстрактный класс из Java), и компилятор скажет вам, что он не может определить размер struct st. В этих случаях либо вам придется вычислять размер вручную и вызывать malloc с номером, либо вы найдете функцию, которая возвращает полностью реализованную и malloc-версию нужной вам структуры.
Вы не совсем делаете это правильно. struct st x
- это структура, а не указатель. Это хорошо, если вы хотите выделить один на стеке. Для распределения на кучу, strust st * x = malloc (sizeof (struct st));
.
struct st * x = (str st st *) malloc (sizeof (struct st));
Это точно возможно - и это правильный способ
Предположим, вы имели в виду набрать
struct st *x = malloc(sizeof(struct st));
ps. Вы должны сделать sizeof(struct), даже если знаете размер всего содержимого, потому что компилятор может разбивать структуру так, чтобы мембраны были выровнены.
struct tm {
int x;
char y;
}
может иметь размер, отличный от
struct tm {
char y;
int x;
}
Это должно сделать:
struct st *x = malloc(sizeof *x);