CodeNewbie Community 🌱

Discussion on: "new" keyword in C

Collapse
 
djuber profile image
Daniel Uber • Edited

I think the answer is no - new in C++ is used for classes and structs to initialize a new instance, C has structs (only), and you declare them like any other variable type.

struct Person jon; // local variable - stack allocated
struct Person* ron = (struct Person *) malloc( sizeof( struct Person )); // pointer to struct - heap allocated
Enter fullscreen mode Exit fullscreen mode

You can see the struct Name gets repeated a lot, it's normal to use a typedef in that situation to make that shorter, usually in the header:

typedef struct Person {
  // structure members go here as normal
} Person;
Enter fullscreen mode Exit fullscreen mode

There is also support for initializing the members during the definition (if you search for "designated initializer" that's probably the standard name for this):

struct Person {
  char name[40];
  unsigned int age;
};

int main() {
  struct Person jon = { name: "John", age: 10};
  struct Person joe = { .name="Joe", .age=20 };
  struct Person jane = { "Jane", 30 };
}
Enter fullscreen mode Exit fullscreen mode

new and delete work around a lot of the chores of using malloc and free, but are C++ only.