반응형
구조물의 새 인스턴스(instance)를 만드는 방법
구조물의 새 인스턴스를 만드는 올바른 방법은 무엇입니까?주어진 구조:
struct listitem {
int val;
char * def;
struct listitem * next;
};
나는 두가지 방법을..
첫 번째 방법(xCode는 이것이 구조와 그르다고 말합니다):
struct listitem* newItem = malloc(sizeof(struct listitem));
두번째 방법:
listitem* newItem = malloc(sizeof(listitem));
아니면 다른 방법이 있습니까?
포인터를 원하는지 아닌지에 따라 다릅니다.
구조를 이렇게 부르는 것이 좋습니다.
typedef struct s_data
{
int a;
char *b;
// etc..
} t_data;
노포인터 구조에 대한 인스턴스화 후:
t_data my_struct;
my_struct.a = 8;
그리고 포인터를 원한다면 그렇게 할당해야 합니다.
t_data *my_struct;
my_struct = malloc(sizeof(t_data));
my_struct->a = 8
이것이 당신의 질문에 대한 답이 되길 바랍니다.
두 번째 방법은 사용한 경우에만 작동합니다.
typedef struct listitem listitem;
유형을 가진 변수를 선언하기 전에listitem
. 구조를 동적으로 할당하는 대신 정적으로 할당할 수도 있습니다.
struct listitem newItem;
당신이 보여준 방식은 모든 사람들에게 다음과 같습니다.int
생성할 항목:
int *myInt = malloc(sizeof(int));
다른 답변 외에 인스턴스를 생성하는 두 가지 간단한 방법을 추가하고자 합니다.예:
struct Person{
float position[2];
int age;
char name[20];
}
struct Person p1 = { {4, 1.1}, 20, "John" };
struct Person p2 = { .age=60, .name="Jane", .position={0, 0} };
printf("%s, aged %i, is located at (%f, %f)\n", p1.name, p1.age,p1.position[0], p1.position[1] );
printf("%s, aged %i, is located at (%f, %f)\n", p2.name, p2.age,p2.position[0], p2.position[1] );
출력:
John, aged 20, is located at (4.000000, 1.100000)
Jane, aged 60, is located at (0.000000, 0.000000)
참고:p1
속성의 순서가 구조 정의의 순서와 일치합니다.유형을 사용할 때 struct를 항상 입력하지 않으려면 다음을 사용하여 새 별칭을 정의할 수 있습니다.
typedef struct Person SomeNewAlias;
SomeNewAlias p1;
그리고 새 가명을 예전 이름과 똑같이 부르면 됩니다.
typedef struct Person Person;
Person p1;
struct listitem newItem; // Automatic allocation
newItem.val = 5;
다음은 http://www.cs.usfca.edu/ ~wolber/SoftwareDev/C/Cstructs.htm 구조에 대한 간단한 설명입니다.
언급URL : https://stackoverflow.com/questions/32577808/how-to-create-a-new-instance-of-a-struct
반응형
'programing' 카테고리의 다른 글
javascript의 고유 (0) | 2023.10.15 |
---|---|
콘솔에서 getc로 \r(캐리지 리턴) vs \n(새 줄) 읽기? (0) | 2023.10.15 |
IIS 8에서 응용 프로그램 풀을 원격으로 중지/시작하는 방법 (0) | 2023.10.15 |
EF가 불필요한 null-check를 사용하여 SQL 쿼리를 생성하는 이유는 무엇입니까? (0) | 2023.10.15 |
오름차순으로 마지막 20개 순서 선택 - PHP/MySQL (0) | 2023.10.15 |