#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
}
댓글