구조물 변수에 값 할당
구조물 유형은 다음과 같이 정의됩니다.
typedef struct student{
int id;
char* name;
double score;
} Student;
저는 Student 유형의 변수를 구성하고 값을 할당하고 싶습니다.어떻게 하면 효율적으로 할 수 있을까요?
int main(){
Student s1;
int id = 3;
char* name = getName(id);
double score = getScore(id);
/*Error
s1 = {id, name, score};
*/
/* Can I avoid assigning values individually?
s1->id = id;
s1->name = name;
s1->score= score;
*/
return 0;
}
C99 표준에서는 복합 리터럴을 사용하여 값을 할당할 수 있습니다.
Student s1;
s1 = (Student){.id = id, .name = name, .score = score};
주의하세요, 구조와 구조에 대한 포인터는 두 가지 다른 것입니다.
C는 다음을 제공합니다.
struct 초기화(선언 시에만 해당):
struct Student s1 = {1, "foo", 2.0 }, s2;
구조체 복사본:
struct Student s1 = {1, "foo", 2.0 }, s2; s2 = s1;
직접 요소 액세스:
struct Student s1 ; s1.id = 3; s1.name = "bar"; s1.score = 3.0;
포인터를 통한 조작:
struct Student s1 = {1, "foo", 2.0 }, s2, *ps3; ps3 = &s2; ps3->id = 3; ps3->name = "bar"; ps3->score = 3.0;
초기화 기능:
void initStudent(struct Student *st, int id, char *name, double score) { st->id = id; st->name = name; st->score = score; } ... int main() { ... struct Student s1; iniStudent(&s1, 1, "foo", 2.0); ... }
(또는 기타 관련 C 표준) 중에서 선택합니다.s1 = {id, name, score};
구문 오류일 뿐입니다 ;-)
값을 개별적으로 할당하지 않아도 됩니까?
값이 이미 유사한 부분에 포함된 경우 가능합니다.struct
즉, 다음을 수행할 수 있습니다.
Student s1 = {.id = id, .name = name, .score = score};
그것은 의 예를 만듭니다.Student
지정한 필드를 초기화합니다.이것은 아마도 개별적으로 값을 할당하는 것보다 더 효율적이지는 않지만 코드를 간결하게 유지합니다.그리고 일단 당신이 존재한다면,Student
인스턴스(instance)는 단순 할당으로 복사할 수 있습니다.
Student s2;
s2 = s1; // copies the contents of s1 into s2
값이 모두 개별 변수에 있고 초기화하지 않는 경우Student
그러면 값을 개별적으로 할당해야 합니다.그러나 언제든지 이를 수행하는 함수를 작성할 수 있으므로 다음과 같은 작업을 수행할 수 있습니다.
setupStudent(s3, id, name, score);
그러면 코드를 짧게 유지하고, 구조물이 매번 동일한 방식으로 채워지도록 보장하며, 정의할 때(만약 그렇지 않다면) 당신의 삶을 단순화할 것입니다.Student
변화들.
언급URL : https://stackoverflow.com/questions/32698293/assign-values-to-structure-variables
'itsource' 카테고리의 다른 글
쿼리 결과에서 실제 날짜에 이전 날짜의 값 추가 (0) | 2023.08.15 |
---|---|
내 테이블만 표시하도록 SQL 개발자를 필터링하는 방법은 무엇입니까? (0) | 2023.08.15 |
PDO 연결 배열로 모든 그룹 키-값 쌍 가져오기 (0) | 2023.08.15 |
SQL 쿼리가 너무 오래 걸리는데 다른 방법이 있나요? (0) | 2023.08.15 |
Swift에서 증가된 값으로 배열을 만드는 방법은 무엇입니까? (0) | 2023.08.15 |