검색결과 리스트
글
2014. 03. 26 수업 및 과제
1 배열
1.1 배열 프로그램 시 주의 할 점
[예제]
#include
<stdio.h>
int main()
{
int arr1[3]; //
배열은
3
개
선언
arr[0]=1, arr[1]=2, arr[2]=3, arr[3]=4; //
실제
값은
4
개가
입력
return 0;
}
배열 프로그램 시 주의 사항)
컴파일 시 경고나 오류 메시지가 없음
실제 값은 4개가 입력되어 다른 메모리 영역을 침범 -> 치명적 오류 문제 발생
1.2 배열의 선언 및 초기화
[예제]
#include <stdio.h>
int main()
{
int arr1[5]={1,2,3,4,5};
int arr2[ ]={1,2,3,4,5,6,7};
int arr3[5]={1,2};
int ar1Len;
int ar2Len;
int ar3Len;
int iCnt;
printf("
배열 arr1
의
크기:%d \n", sizeof(arr1)); //int 4byte x 5 =20
printf("
배열 arr2
의
크기:%d \n", sizeof(arr2)); //int 4byte x 7 =28
printf("
배열 arr3
의
크기:%d \n", sizeof(arr3)); //int 4byte x 5 =20
ar1Len = sizeof(arr1) / sizeof(int); //
배열 arr1
의
길이
계산
ar2Len = sizeof(arr2) / sizeof(int); //
배열 arr2
의
길이
계산
ar3Len = sizeof(arr3) / sizeof(int); //
배열 arr3
의
길이
계산
for(iCnt=0; ar1Len>iCnt; ++iCnt)
printf("%d ", arr1[iCnt]);
printf("\n");
for(iCnt=0; ar2Len>iCnt; ++iCnt)
printf("%d ", arr2[iCnt]);
printf("\n");
for(iCnt=0; ar3Len>iCnt; ++iCnt)
printf("%d ", arr3[iCnt]);
printf("\n");
return 0;
}
[결과]
1.3 문자배열의 초기화
- printf(“%c \n”, str);
- “ABCD” 문자열을 초기화 하면 맨 끝에 null 값을 넣는다.
- %c 한 문자만 출력
- str &(주소)를 의미 한다.
[예제]
#include <stdio.h>
int main()
{
char
printf("배열 str의 크기: %d \n", sizeof(str) );
printf("널 문자 문자형 출력: %c \n", str[13] );
printf("널 문자 정수형 출력: %d \n", str[13] );
str[12]='?'; // 배열 str에 저장된 문자열 데이터는 변경 가능!
str[4]=0; // 0 null이 들어 간다
printf("문자열 출력: %s \n", str); //null(0) 이 나올때 까지 출력
printf("문자열 출력: %s \n", str);
printf("문자열 출력: %s \n", &str[5]); //&[5]번째 부터 null이 올때까지 출력
printf("문자열 출력2: %c \n", str[5]); //[5]번째 속한 %c한문자 출력
printf("%08X \n", &str);
printf("%08X \n", &str[0]);
return 0;
}
[결과]
1.4 배열을 이용한 문자열 변수의 표현
str.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
G |
o |
o |
d |
|
m |
o |
r |
n |
i |
n |
g |
! |
null |
|
|
|
|
|
|
Ø
c
언어: “
문자열”
끝에 null
값이
들어감
Ø
어셈블리: “
문자열”
끝에 null
값이
들어가지
않음
Ø
문자열: null
이
포함된
문자배열.
Ø
배열을
포인터처럼
쓸
수
있다.[
예제2]
Ø
포인터를
배열처럼
쓸
수
있다. [
예제2]
Ø
str
포인터로
쓸
수
있다.(
값이
안
변하는
포인터)
Ø
cost
포인터와
같다.
Ø
예)char * const cp3=str;
[
예제1]
#include <stdio.h>
int main()
{
char str[]="Good morning!";
char *cp1;
char *cp2;
cp1=str; //cp1: str
의
주소상수를
담는
포인터(
주소)
변수
printf("%c \n", *cp1); //cp1
이
가리키는
주소의
한
문자
출력
printf("%s \n", cp1); //
포인터
변수
printf("%s \n", str); //
주소
상수
/*
++cp1;
printf("%s \n", cp1); //
변수
printf("%s \n", str); //
배열 str
자체가
주소
상수
*/
printf("----------------\n");
cp1=cp1+5;
printf("%s \n", cp1);
printf("%s \n", str+5);
printf("----------------\n");
cp2=str;
printf("%c \n", str[0]);
printf("%c \n", cp2);
printf("----------------\n");
printf("%c \n", *(str+1));
printf("%c \n", *(cp2+1));
printf("%c \n", cp2[1]);
printf("%c \n", str[1]);
return 0;
}
[예제2]
#include <stdio.h>
int main()
{
char str[]="%d %d\n";
char * cp1=str;
printf("%d %d\n", 100,50); //1 printf(” ”, ...);” ”
주소
상수
printf(cp1, 100,50); //2 printf(cp, ...);cp
주소
상수
printf(str, 100,50); //3 printf(str, ...);str
주소
상수
return 0; //1,2,3
모두
같은
결과값
출력
}
- “ABCD” 문자열을 초기화 하면 맨 끝에 null 값을 넣는다.
- %c 한 문자만 출력
- str &(주소)를 의미 한다.
.
'…™업무일지。' 카테고리의 다른 글
[smart]이재우-20140327 (0) | 2014.03.27 |
---|---|
[smart]이재우-20140326 (0) | 2014.03.26 |
[smart]이재우-20140324 (1) | 2014.03.24 |
[smart]이재우-20140321 (0) | 2014.03.21 |
[smart]이재우-20140320 (0) | 2014.03.20 |
RECENT COMMENT