인생 첫 스터디어서 걱정도 부담도 많이 가진 채로 시작했다. (코칭 스터디는 제외 ㅎㅎ) 코칭스터디를 통해서 이미 알고 있던 개념들도 있었는데, 다른 사람에게 설명해야 한다는 생각을 하니 하나하나 새롭게 느껴졌다. 그래서 더 심도 깊게 (아직 부족하지만) C언어를 공부할 수 있었다. 그리고 함께한 분들 덕분에 한 달 동안 매일 아침을 새로운 마음가짐으로 하루를 시작할 수 있었고, 미루고 미루던 블로그와 깃허브를 시작할 수 있었다. 라피신을 위해 시작한 C언어 스터디였지만 더 많은 것을 얻었다. 그동안 정말 즐거웠다! 👍👍
예제 1. 연결리스트 #include struct abc { // 구조체 정의 int data; struct abc *next; // 자기 참조 구조체 }; int main() { struct abc x; struct abc y; struct abc z; x.data = 10; y.data = 20; z.data = 30; x.next = &y; y.next = &z; z.next = NULL; struct abc *p; for (p = &x; p; p=p->next){ printf("%d\n", p->data); } printf("구조체 y 삭제 후 \n"); x.next = y.next; y.next = NULL; for (p = &x; p; p=p->next){ printf("%d\n", p->da..
예제 1. #include #include #include struct book{ char name[40]; char author[40]; int price; char *info; }; int main(void){ struct book book1 = {"혼자 공부하는 C언어", "서현우", 21600}; struct book book2 = {"C언어 코딩도장", "남재윤", 22500}; book1.info = (char*)malloc(sizeof(char)*100); book2.info = (char*)malloc(sizeof(char)*100); strcpy(book1.info,"1대1 과외하듯 배우는 프로그래밍 자습서"); strcpy(book2.info,"프로그래밍은 연습으로 배우는 것이다!");..
1402. 거꾸로 출력하기 3 데이터 n개가 입력되면, 입력의 역 순으로 출력하는 프로그램을 작성하자. 첫째 줄에 데이터의 개수 n이 입력되고, 둘째 줄에는 공백을 기준으로 n개의 데이터가 입력된다. 배열 사용하기 #include int main(void){ int n; scanf("%d", &n); int arr[n]; for(int i=0; i=0; i--){ if(i==0) printf("%d",arr[i]); else printf("%d ",*(arr+i)); } } 동적 메모리 사용하기 #include #include int main(void){ int n; scanf("%d", &n); int *parr = (int*)malloc(sizeof(int)*n); //동적 메모리 할당 여부 확인 i..
1581. swap함수 만들기 이 문제는 두 변수의 값을 바꾸는 함수를 구현하는 문제입니다. 아래 내용을 참고해서 풀어보세요. 함수명 : myswap 매개 변수 : 정수형 포인터 변수 변수 2개(매개변수를 반드시 int∗로 사용) 반환 값 : 없음 함수 내용 : 첫 번째 포인터가 가리키는 변수의 값이 두 번째 포인터가 가리키는 변수의 값보다 클 경우 두 값을 교환 1회. 문제 그대로 풀기 #include void myswap(int * pa, int * pb){ if(*pa > *pb){ int temp = *pa; *pa = *pb; *pb = temp; }else return; } int main(){ int a, b; scanf("%d%d", &a, &b); myswap(&a, &b); printf..
1402. 2차원 배열 순서대로 채우기 1-1 데이터 n개가 입력되면, 입력의 역 순으로 출력하는 프로그램을 작성하자. 첫째 줄에 데이터의 개수 n이 입력되고, 둘째 줄에는 공백을 기준으로 n개의 데이터가 입력된다.다음과 같은 n*n 배열 구조를 출력해보자. 입력이 3인 경우 다음과 같이 출력한다. 1 2 3 4 5 6 7 8 9 배열 사용하기 #include int main(void){ int n; scanf("%d", &n); int arr[n][n]; int num=1; //2차원 배열 초기화 for(int i=0; i
1402. 거꾸로 출력하기 3 데이터 n개가 입력되면, 입력의 역 순으로 출력하는 프로그램을 작성하자. 첫째 줄에 데이터의 개수 n이 입력되고, 둘째 줄에는 공백을 기준으로 n개의 데이터가 입력된다. 배열 사용하기 #include int main(void){ int n; scanf("%d", &n); int arr[n]; for(int i=0; i=0; i--){ if(i==0) printf("%d",arr[i]); else printf("%d ",*(arr+i)); } } 포인터 변수 사용하기 #include int main(void){ int n; scanf("%d", &n); int arr[n]; int *p = arr; for(int i=0; i=0; i--){ if(i==0) printf("%d..
2021.03.06.토 공용체 ✔ 공용체는 선언 방식이 구조체와 같지만, 공용체는 모든 멤버가 하나의 저장 공간을 같이 사용한다. union student{ int num; double grade; }; ✔ 공용체는 union 예약어를 사용해 선언하며, 구조체와 마찬가지로 공용체 변수를 선언해 사용할 수 있다. ✔ 공용체 역시 선언 후 세미콜론을 붙여 마무리해야한다. ✔ 이 때, 저장 공간이 할당되는 방식과 초기화하는 방식은 다음 규칙을 따른다. //공용체 변수의 크기는 멤버 중 가장 큰 자료형의 크기로 설정 printf("st1의 크기 : %lu\n", sizeof(st1)); ✔ 공용체 변수의 크기는 멤버 중 크기가 가장 큰 멤버로 결정된다. ✔ student 공용체의 경우 가장 큰 double형만큼..
2021.03.06.토 구조체 배열 ✔ 구조체 변수는 멤버가 여러 개지만 구조체 변수 자체는 하나의 변수로 취급된다. ✔ 따라서 같은 형태의 구조체 변수가 많이 필요하면 배열을 선언할 수 있다. struct person { char *name; int age; char *addr; }; int main(void){ struct person list[3] = { {"짱구", 5, "서울"}, {"유리", 5, "부산"}, {"철수", 5, "제주"} }; return 0; } ✔ 구조체 배열을 선언하면 구조체 변수가 배열의 요소가 된다. ✔ 각 요소는 일정한 크기로 연속된 저장 공간에 할당된다. ✔ 구조체 배열의 초기화는 배열의 초기화 방식이 동일하다. 다만 요소가 구조체이므로 중괄호를 2개 사용하자. p..
2021.03.05.금 구조체 변수의 초기화와 대입 연산 struct student{ int num; char name[20]; double grade; }; struct student s1 = { 21, "홍길동", 2.4 }; ✔ 구조체 변수도 일반 변수와 같이 선언과 동시에 초기화가 가능하다. ✔ 하지만 여러 멤버를 초기화해야 하므로, 배열 초기화와 비슷한 방법을 사용해야 한다. ✔ 초깃값을 중괄호로 묶고 각 멤버의 형태에 맞는 값으로 초기화. struct student temp; struct student s1={315, "유리", 2.4}; struct student s2={316, "짱구", 3.7}; struct student s3={317, "철수", 4.4}; temp = s1; //s1..