Tôi có một khối lộn xộn mã nhưC có cách viết tắt của khởi tạo một cấu trúc với malloc và thiết lập các trường của nó không?
result = (node*)malloc(sizeof(node));
result->fx = (char*)malloc(sizeof(char) * 2);
result->fx[0]='x'; result->fx[1]='\0';
result->gx = NULL; result->op = NULL; result->hx = NULL;
nơi tôi khởi tạo một phần tử của kiểu
typedef struct node
{
char * fx; // function
struct node * gx; // left-hand side
char * op; // operator
struct node * hx; // right-hand side
} node;
Có cách viết tắt để làm điều đó? Nói cách khác, có cách nào để làm như tôi sẽ làm trong C + +?
result = new node { new char [] {'x','\0'}, NULL, NULL, NULL };
Rất tiếc là không. Nếu bạn muốn khởi tạo tất cả các trường bằng 0, bạn có thể sử dụng 'calloc'. Và đừng in ra kết quả của 'malloc'. –
Nếu 'fx' luôn là malloc'd với cùng kích thước thì bạn có thể làm cho nó thành mảng –
Bạn có thể làm rõ liệu' 'x'' có bị mã hóa cứng hay nếu đây là mã giả và bạn muốn khởi tạo ' fx' với dữ liệu được người dùng nhập vào chẳng hạn? –