박하의 나날

[자료구조]배열,구조체,포인터_오답

프로그래밍/간단메모

3.float a[100]으로 선언된 배열의 시작 주소를 1000번지라고 할때, 배열의 10번째 요소의 주소는 몇 번지인가?

: 1040번지


4.구조체의 배열이 가능하다.

구조체 변수에 대하여 비교연산이나 산술 연산은 할수 없다.

구조체 안에 배열을 넣을 수 있다.

서로 다른 데이터 형도 묶을 수 있다.


12.struct {int fa; int fb;} a; *p=&a; 라고 할때 fa를 수정하는 문장으로 맞는 것은?

(*p).fa = 10;

p[0].fa = 10;


17.다음과 같이 정의된 배열의 10번째 요소의 주소는? 단 배열의 시작 주소는 1000번지로 한다.

char a[100] 1100

short b[100] 1200

int c[10]] 1400

float d[100] 1400


21 .i가 정수 변수이고 p와 q가 정수를 가리키는 포인터라면 다음 중 어느 문장이 컴파일 오류를 발생할 것인지 지적하고 그 이유를 밝혀라.

1)p=&i;

2)p=*&i;

3)p=&*i;

4)i=*&*p;

:?///3


23.p1= p2; 포인터 p2가 가지고 있는 주소값을 p1에 대입

*p1\*p2; p2가 가리키는 값을 포인터p1이 가리키는 값에 대입


24. p = &*p = *&p;


25.int **p; 정수포인터에 대한 포인터p

int *p[100]; 정수포인터 배열p

void (*f)(int); 정수 매개변수와 void반환값을 가지는 함수에 대한 포인터f 


26.배열x를 {1,2,3,4,5,6}으로 초기화 한 후 포인터p를 정의하고 저장할 주소는 x[2]로 하고 *(p+3) 과 *(p-2) 및

그 값의 곱을 구하는 프로그램을 작성하라.

1
2
3
4
5
#include<stdio.h>
main(){
    int x[] = {1,2,3,4,5,6};
    int *= &x[2];
    printf("%d,%d,%d"*(p+3), *(p-2), *(p+3* *(p-2)); }
cs


27.

1개의 정수와 최대크기가 20인 문자열로 이루어진 구조체를 저장할 수 있도록 동적메모리를 할당받고 여기에 

정수100과 문자열 "just test"을 저장한 다음 동적메모리를 반납하는 프로그램을 작성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<malloc.h>
#include<string.h>
 
void main(){
    struct test{ int i; char str[20]; }// 1개의 정수와 최대크기 20인 문자열
    struct test *p;//구조체 포인터
 
    p = (struct test*)malloc(sizeof(struct test));
    //동적메모리 할당
    if(p==NULL){printf("memory error"); return;}
    p->i=100;
    strcpy(p->str, "just test"); //정수, 문자열 저장
    free(p);//동적메모리 반납
}
cs


28.

1
2
3
typedef struct{float real; float imaginary} complex;
complex c1, c2;
 
cs


30.

1
2
3
4
5
6
#define SIZE 100
struct person{
    char name[SIZE];
    int age;
    struct {int month, day, year;} brith;
};
cs