[작성자:] snowall

  • int와 char

    C언어에서 가장 많이 사용하는 변수는 역시 int일 것이다. 당장 for문 쓰려고 해도 int형 변수를 선언해야 하니까.

    기본적으로, int는 정수형 변수고 char는 문자형 변수를 나타내는 예약어이다.

    다음과 같이 선언해서 쓴다.

    int a;

    char b;

    이렇게 하면 a는 정수 1개를 저장하는 변수가 되고 b는 문자 1개를 저장하는 변수가 된다.

    a=65;

    b=’A’;

    이렇게 사용할 수 있다.

    그런데 이런것도 된다.

    a=’A’;

    b=65;

    이게 되는 이유는 C언어에서 문자를 숫자로 변환해서 사용하기 때문이다. 이때 변환하는 규칙은 ASCII코드표에 다 써져 있다. (ASCII코드가 아닌 다른 코드를 쓸 수도 있지만, 대세는 ASCII이다.)

    다음과 같이 하면, a는 66이 되고 b는 “B”가 된다.

    a++;

    b++;

    물론 다음과 같은 것도 된다.

    printf(“%d\n”, a);

    printf(“%c\n”, (char)a);

    printf(“%c\n”, b);

    printf(“%d\n”, (int)b);

    이렇게 하면 그 결과는

    65

    A

    A

    65

    가 될 것이다.

    int와 char는 공통적으로 (실제로는) 둘 다 정수 1개를 저장한다. 하지만 int로 선언한 경우와 char로 선언한 경우에는 그 해석이 달라지는데, char로 선언하면 그것을 문자 1개로 해석한다. int로 선언한 경우에는 그것을 정수로 해석한다. 그리고 char에 저장될 수 있는 내용은, 그것을 정수로 생각한다면 8비트 정수 1개만 가능하다. 하지만 int는 그 선언을 어떻게 하느냐에 따라 다 달라진다

    int a; //기계 또는 컴파일러에서 제공하는 기본적인 정수형의 길이(대체로 16비트나 32비트)

    short int a; //16비트(2바이트) 길이

    long int a; //32비트(4바이트) 길이

    long long int a; //64비트(8바이트) 길이. 이건 요새 64비트 컴퓨터가 늘어나면서 쓰게 되었다. 운영체제에 따라서 long long 대신 int64를 쓰는 것도 있다.

    이렇듯 더 큰 숫자를 쓰기 위해서 길이를 여러가지로 지정할 수 있다.

    char은 또 한가지 중요한 특징이 있는데, 웬만해서는 포인터형 변수 또는 배열 변수로 사용한다는 점이다. 만약 “snowall”이라는 문자열을 처리하기 위해서 7개의 변수가 필요하다고 할 때,

    char a=’s’;

    char b=’n’;

    char c=’o’;

    char d=’w’;

    char e=’a’;

    char f=’l’;

    char g=’l’;

    이런식으로 쓰는 프로그래머가 있을지도 모르겠지만, 아마 돈받고 일하는 프로그래머중에는 없을 것이다.

    이렇게 쓰면 아주 많은 문제가 발생한다. 직접 문자열을 다루고 체험하면서 느낄 수도 있지만 그런 수고를 덜기 위해서 간단히 설명해 보자면, 저렇게 쓰면 귀찮다. (귀찮지 않다면… 뭐 굳이 저렇게 써도 상관 없지만, 혼자서 개발하는 프로그램에만 저렇게 쓰기를 바란다.) 그래서 다음과 같이 쓸 수 있다.

    char a[8] = “snowall”

    이렇게 쓰면 a[0]부터 a[7]까지 접근하여 snowall의 각각의 글자들을 다룰 수 있다.



    [각주:

    1

    ]



    물론 a라는 배열 변수를 이용하여 한번에 뭔가를 할 수도 있다.

    하지만 이 경우에도 문제가 발생하는데, a에 저장하여야 할 문자열의 길이가 7글자가 아닌 경우이다. 이때는 다시 길이를 마음대로 바꿀 수 있는 포인터를 사용하여 선언하게 된다.

    #include

    char *a;

    a = malloc(sizeof(char)*8);

    strcpy(a, “snowall”);

    free(a);

    이와 같이 쓰면 코드는 좀 복잡하지만 문자열의 길이를 맘대로 바꿔가면서 사용할 수 있다.

    1. 글자가 7개인데 배열이 8칸인 이유는 숨어있는 1글자 때문에 그렇다. 그 숨어있는 1글자는 자습.

      [본문으로]

  • 광주로…

    서울에 올라오는데 핸드폰 충전기를 안 갖고 왔다. 알다시피(?) HTC Desire는 TTA인증된 일반 핸드폰 충전기를 직접 꽂을 수 없다.

    그래서 광주로 가야 한다는 슬픈…

    자기 위로하기중. -_-;

  • 정체

    비슷한 내용의 글을 반복적으로 쓰고 있는 느낌이다. 그런데 내가 도대체 무슨일을 하고 있는지 정리하지 않으면 나중에 어디 가서 도대체 뭘 했냐고 말할 때 “전부 다” 해봤다고밖에는 말할 수 없어서 계속 정리해두려고 한다.

    1. 납땜

    2. 유기물 반도체 박막 제작 및 물성평가

    3. 고에너지 레이저용 미러 마운트 조립 및 성능시험

    4. 방사선 안전관리 실무

    5. 실험실 자동화 시스템 개발(일부)

    6. 실험 결과 분석 및 정리

    7. 논문 찾기

    8. 실험실에서 사용하는 프로그램 개발

    9. 실험실 컴퓨터 관리

    10. 레이저 광축 점검 및 보정

    11. 실험 결과 관리

    그나저나 계속해서 단순 작업만 하다보니 머리가 나빠지는 느낌이다. 치매 예방엔 좋겠지만 생각이 없어짐.

    그래서.

    12. 중성미자의 섞임각에 대한 현상론적 연구

    13. 한국방송대학 컴퓨터학과 전공(학사)

    14. 한국방송대학 영어영문학과 전공(학사) (예정)

    15. 피아노 연습

    그리고 아직까지 전혀 늘지 않은건 사람 대하는 기술. -_-;

  • 왜케 심각해여?

    박사과정에 있는 A라는 분이 B박사님에게 뭔가를 지시받고 조사를 해왔다.

    “C타입의 미러는 반사형으로 쓰는 사람은 없고 투과형으로만 쓰는 것 같습니다.”

    여기까지 말을 했는데

    “C타입의 미러는 a의 xxx인 특성을 조사하기 위하여 쓰는 건데 반사형인 경우에는 고에너지에 쓰고 투과형인 경우에는 저에너지에 쓰고 … 그렇게 쓰는 미러가 C타입과 D타입이 있는데 …”

    B박사님이 이런 내용으로 약 10분동안 열심히 설명을 하셨다.

    그리고 A라는 분은

    “그런데 C타입은 투과형으로만 사용합니다”

    이 2가지 대사를 갖는 대화가 꽤 여러번 오갔다. 내가 볼 땐, A가 “그건 잘 알고 있고요, 제가 하고 싶은 얘기는…”이라는 애드립을 넣고 싶어하는 느낌이 들었다.

    난 그 주제에 관심이 없고, 두분은 그 주제에 대해서 서로 잘 알고 계시는 것 같은데, B박사님이 왜 그렇게 기초적인 부분부터 설명하는지 잘 이해가 안갔다. 딱히 그 주제에서 논의하고 있는 내용이 물리학적으로 어려운 것도 아니고…

    서로 잘 알고 있는 내용이면 좀 건너뛰고 빠르게 넘어가면 안되는 걸까. -_-;

  • 월요일 출근

    월요일 출근 확정…

    서울->광주

    남들은 귀경길인데 난 출근길…-_-; 최악의 러시 아워가 될 듯.

    물론, 퇴근은 광주->서울이다.

  • 꾸준한 다이어트의 결과

    평균 67.4kg에서 머물던 체중이 68.1kg으로 향상되었다.

    아무래도 쓰러질때까지 몸을 단련해야 할 듯. -_-;

  • 주차

    아까 집에 10시쯤 들어와서 주차할 곳 찾느라 20분정도 돌아다니다가 집에서부터 걸어서 5분정도 되는 먼 곳에 주차를 했는데 방금 전화와서 차 빼달라고…

    목욕탕 주인인데 목욕탕 앞에 주차를 해야 한다고…

    30미터 앞에, 여전히 목욕탕 건물 바로 옆인 바로 그곳에 주차할 곳 있더만…

    왜 굳이 목욕탕 문 앞에 주차를 해야 하는지 모르겠지만 차 빼주고 왔다. 어차피 이미 잠은 깼다.

  • 바퀴벌레

    내 자취방에서…

    파리에 이어 바퀴벌레도 굶어 죽은 것이 발견되었다.

  • 화이트홀에 대한 의문

    적당한 경계조건에서 아인슈타인의 장 방정식을 풀면 특이점 있는 해가 2개 나오는데, 하나는 블랙홀이라는 이름이 붙어있고 다른 하나는 (블랙홀 때문에) 화이트홀이라는 이름이 붙었다.

    내가 아직 일반 상대성 이론을 공부해보지 못해서 중력방정식을 풀어보지 못한 고로 답은 모르겠고…

    궁금한 것은,

    1. 화이트홀 주변에서도 시간이 느려지나?

    2. 블랙홀 근방에서는 빛의 방향이 전부 블랙홀을 향한다. 따라서 그 근방에서는 미래가 블랙홀로 가는 방향이다. 그럼 화이트홀 근방에서는 반대로 빛이 모두 화이트홀에서 나오는 방향일 것이다. 그 근방에서는 모든 과거가 화이트홀에서 유래되었을 것이다. 만약 그렇다고 한다면, 화이트홀이 발견되지 않는 것은 당연한 결과 아닐까?

  • 법학박사


    http://www.wowtv.co.kr/news/wownews/view_nhn.asp?seq=&mseq=8&artid=A201009130088&bcode=T01010000&arttitle=&currPage=1&vodnum=&articleid=&compcode=&wowcode=&type=&bcode=T01010000&skey=TITLE&sval=

    음. 확실히 그분의 법 지식은 박사급이긴 할 듯. 인정받을걸 인정받은 셈이니 정당한건가. -_-;

    사족 : 근데 경제학, 법학, 철학 같은 분야는 명예 학위를 주는데 물리학, 수학, 공학, 이런 분야는 왜 안주지?