- 배열 통째로 옮기기 -
#include <stdio.h>
typedef struct _person //먼저 그 사람의 정보를 위한 구조체 선언.
{
char name[20];
char phoneNum[20];
int age;
}person;
int main(void)
{
person arr = {"한지수", "010-1717-0003", 19}; //struct person 타입의 구조체 배열 형태로 그 사람들의 정보 값을 초기화.
person temp;
person temp2;
printf("%s %s %d\n", arr.name, arr.phoneNum, arr.age);
temp = arr; //배열에다 배열 값은 못 집어넣는다. 상수 = 상수 기에
//허나, 이런식으로 그 배열값들을 다 집어 넣고 싶을때 구조체를 따로 선언하여 구조체 = 구조체 식으로는 복사 붙여넣기가 된다.
printf("%s %s %d\n", temp.name, temp.phoneNum, temp.age);
strcpy(temp2.name,arr.name);
strcpy(temp2.phoneNum,arr.phoneNum);
temp2.age = arr.age;
printf("%s %s %d\n", temp2.name, temp2.phoneNum, temp2.age);
printf("arr의 크기는 ? : %d byte",sizeof(arr));
return 0;
}
/*
struct smart
{
int iArr[5]
};
smart A = {5,4,3,2,1}; // 이러한 형태로 이용이 가능 하다.
smart B = A;
*/
-
구조체 메모리 저장 형태 -
#include <stdio.h> //데이터간 장치간 통신할때 사용하는 프로그래밍 해 볼 것
typedef struct _smart
{
int a;
char b;
short c;
int d;
char e;
short f;
char g;
int h;
char i;
char j;
short k;
}smart;
int main(void)
{
printf("구조체 type smart의 크기는 ? : %d Byte",sizeof(smart));
return 0;
}
/* 스택 구조는 아래서 부터 변수가 선언 되는 것인데
20바이트를 차지하려면 밑에서부터 5칸을 차지 해야 한다.
★컴파일러가 32비트기에 4바이트에 맞추려고 노력중이다.
int 가 4바이트라 우선순위가 제일 높고 하나의 스텍을 쓰게된다.
허나, char 와 short는 1바이트와 끝에 2바이트를 생성하여 한바이트를 뛰어넘게 된다.
즉, int를(4바이트) 제일 좋아하고 그 다음을 short 형 (2바이트)를 그 다음으로 좋아하고
다시 정리하면 1 1 2 , 2 1 1 과 같다. 좋아하는 2바이트는 중간에 쓰게 되면 한칸 띄우고 한다.
ex) 5바이트를 보내려한다면 2바이트를 먼저 선언 후 , char 형을 세개 선언해줘야 순서가 맞다.
그리고 나서 8바이트 나머지를 선언하려 한다면 char형을 선언해준 다음 그 다음에 short를 선언해줘야
딱 맞는 8바이트 형태가 된다.
*/
'개발자 > C 언어' 카테고리의 다른 글
C언어_교환법칙, (2,3)차원 배열, 더블 포인터의 이해 (0) | 2015.04.17 |
---|---|
C언어_구조체 메모리 최적화(전처리어 pragma 사용법),구조체 활용, 공용체 사용법 (0) | 2015.04.17 |
C언어_펌웨어_인터럽트 사용법 (0) | 2015.04.17 |
C언어_펌웨어_주사위 인터럽트 사용. (0) | 2015.04.17 |
C언어_펌웨어_int0 count dn , int4 count up (0) | 2015.04.17 |