본문 바로가기
01.Bit 단기/C

20_문자열

by chojju 2018. 4. 28.
반응형

#include <stdio.h>

void exam1();
void exam2();
void exam3();
void exam4();
void exam5();
void exam6();

int main()
{
 exam6();
 return 0;
}
//문자열 표현(배열) 가장 일반적인 표현법
void exam1()
{
 char arr1[] = { "hello" };
 char arr2[] = { 'h', 'e', 'l', 'l', 'o', '\0' };
 char arr3[] = "hello";
 char arr4[] = { 'h', 'e', 'l', 'l', 'o'};

 printf("%d : %d : %d : %d\n",
  sizeof(arr1), sizeof(arr2), sizeof(arr3), sizeof(arr4));
 
}

//#define MAX 10   MAX ==> 10 치환
#define EXAM2_BEGIN void exam2(){
#define EXAM2_END   }
#define PRINT(X)  printf("%d\n", X);
EXAM2_BEGIN // void exam2(){
PRINT(10) //     printf("%d\n", 10);
EXAM2_END //  }

#define MSG "hello"
void exam3()
{
 char arr[] = MSG;
 printf("%s : %s\n", arr, MSG);
}

//#define  1) 배열 선언, 2) 문장 치환 3) 문자열 상수
//         4) 매크로 함수 : #define을 함수처럼
//      ==> 일반화 코드가 만들어 진다.
//int add_n(int n1, int n2) { return n1 + n2; }
//float add_f(float n1, float n2){ return n1 + n2; }
#define ADD(X,Y) X+Y
void exam4()
{
 printf("%d\n", ADD(10, 20)); // 10+20
 printf("%.1f\n", ADD(10.1, 20.2));//10.1+20.2
// printf("%d\n", add_n(10, 10));
// printf("%.1f\n", add_f(10.1f, 10.1f));
}

void exam5()
{
 char arr[] = "ab";
 char *parr1 = "ab";
 char *parr2 = "ab";

 printf("%d : %d\n", parr1, parr2);

 //1. 배열   : 값 변경 가능
 //   포인터 : 불가
 arr[0] = 'A';
// parr1[0] = 'A'; //error.(실행 시)runtime error

 //2. 배열 : L-value 사용 불가
 //3. 포인터 : L-value 사용 가능
// arr = "aaa"; //배열의 이름은 주소이지
     //저장공간의 이름이 아니다.
 parr1 = "aaa";
}

void exam6()
{
 char *p = "abcd";

 printf("%c\n", *(p + 1));  //b

 printf("%c\n", *(++p));   //b
 printf("%c\n", *p);    //b
}

 

반응형

'01.Bit 단기 > C' 카테고리의 다른 글

22_구조체1  (0) 2018.04.28
21_명령행인자  (0) 2018.04.28
19_void포인터  (0) 2018.04.28
18_함수포인터  (0) 2018.04.28
17_포인터  (0) 2018.04.28

댓글