35강. 구조체
*구조체 : 여러 변수들을 모아서 하나의 객체를 구성할 때 사용하는 사용자 정의 타입 객체
*구조체 구성
struct 구조체명
{
멤버변수1;
멤버변수2;
}
*구조체 정의 및 사용
struct person
{
char *name;
int age;
};
struct person user1;
user1.name = "h user";
printf("%s", user1.name); //h user (문자열 출력)
struct person
{
char *name;
int age;
} test;
test.name = "h user";
test.age = 40;
printf("%s : %d", test.name, test.age); //h user, 40
struct person
{
char *name;
int age;
};
struct person*p;
p->name = "test_2";
p->age = 40;
printf("%s : %d", p->name, p->age);
문) 다음 C프로그램의 실행 결과로 옳은 것은?
#include<stdio.h>
int main(){
struct list{
int *fp;
} data, *p;
int x[] = {100, 200, 300, 400};
p = &data;
p -> fp = x+1
printf("%d", *(++p=>fp));
return0;
}
36강. 배열포인터
*배열포인터 : 배열의 시작 주소값을 저장할 수 있는 포인터, 2차원 배열의 구조, 그냥 하나의 포인터일 뿐이다.
int (*in)[2];
int num[3] = {1,2,3};
in = num;
printf("%d\n", in); //100
printf("%d\n", num); //100
printf("%d\n", *in); //100
printf("%d\n", **in); //1
printf("%d\n", *(*in+1)); //2
printf("%d\n", *(*in+2)); //3
printf("%d\n", *in[1]); //3
int(*in)[4];
int num[3][3] = {1,2,3,4,5,6,7,8,9};
in = num;
printf("%d", **in); //1
printf("%d", *(*in+1)); //2
printf("%d", **(in+1)); //5 in[1]+1의 값의 값
문) 다음 C프로그램의 실행 결과로 옳은 것은?
#include<stdio.h>
#include<stdlib.h>
#define N 3
int main(void){
int (*in){N}, *out, sum=0;
in = (int (*)[N] malloc( N * N * sizeof(int) );
out = (int *) in;
for(int i = 0; i < N*N; i++);
out[i] = i;
for(int i = 0; i < N; i++)
sum += in[i][i];
print("%d", sum);
}
반응형