정보처리기사/[흥달쌤] 실기_깨알 C언어

C언어 특강 / 35. 구조체, 36. 배열포인터

web_seul 2022. 6. 7. 23:10
반응형

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);
}

 

 

반응형