달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

 

  1. 함수의 선언 방식 : 함수의 선언은 '반환형+함수명()+인자'로 한다. 이 선언부분을 함수의 머리라고 해서 '함수의 헤더'라고 부른다. 이러한 헤더파일이 모여 있는 곳이 헤더파일인 것이다. 따라서 <stdio.h>에는 printf, scanf와 같은 함수들의 선언이 들어있다. 가령 printf는 int printf(인자들) 이라고 되어 있을 것이다. 코드참조.

     

  2. 선언위치 : 함수를 사용하기 전에 그 함수가 '존재하는 지'를 알아야 한다. 즉 함수선언은 함수호출 이전에 해야 한다.

 

  1. 함수의 정의 : 함수가 어떻게 동작하는 지를 정의하는 것이다. 덧셈함수를 예를 들면, '덧셈작용'이 함수의 기능 즉, 함수의 정의이다. 함수의 정의는 main위에 써도 되고 main 아래에 써도 된다. 정의 문법은 아래 예시 코드를 참조하기 바란다.

    <예시>

위 코드에서는 6행에서 add라는 함수를 선언한 후, 7행에서 이 함수를 쓰고 있다. 이 함수의 정의는 main 바깥에 있다.

 

  1. 함수의 인자: 함수에 전달할 '어떠한 값'이 인자이다.

    덧셈함수에서는 덧해질 숫자 두 개가 필요하므로 인자가 두 개일 것이다.

    반면, 아래 코드 처럼 'good~'을 출력하는 함수의 외부 값을 필요로 하지 않는다. 즉 어떠한 인자도 필요가 없는 경우 '인자가 없다'라고 선언, 정의, 호출 할 수 있다. 또한 선언, 정의, 호출에서 각 각 형식이 맞아야 한다.

     

     

     

[지역변수와 함수의 반환형은 다음 글로]

[기타]

웹마케팅 조사

 

Posted by C언어 보이
|

함수란 기능의 단위이다.

아래는 출력함수의 반환형을 구하는 코드이다.

두 출력함수의 반환형은 6, 15인데 이는 글자수+공백수 이다.

 기본적으로 printf의 반환형은 int형이다.

   

   

아래는 printf에서 f를 뺄 때의 에러이다. 본래 printf는 C에서 사용자가 정의한 함수가 아니라, 어셈블리어로 미리 구현되어 있는 함수이므로, printf를 쓰는 건 링크이다. 이 print는 어셈블리어에서 정의되지 않았으므로 외부 참조 에러, 즉 링크 에러가 난 것이다.

Posted by C언어 보이
|

전날의 예제와 비슷하다.

전날에는 십진수 실수를 대입한 후, 메모리의 각 주소에 저장된 수를 8진수로 확인하였다.

 

이번에는 반대로 코드에서 메모리의 각 주소에 8진수로 수를 직접 대입하여, 이 것이 실수로 어떻게 표현하는 지 확인해 본다.

코드는 아래와 같다.

위의 코드를 이해하기 위해서는, 실수의 저장방식을 알아야 한다.

처음 1비트는 부호비트, 그 다음 8비트는 지수부, 그 다음 23비트는 가수부로서 총 32비트, 즉 4바이트로 구성된다.

예를 들어, 3.25는 이진수로 11.01이다. 이는 1.101을 앞으로 한 칸 땡긴 것이므로, 지수부는 1이 된다.

첫 째 자리 1은 당연히 있는 것으로 봄으로, 가수부에서는 1 에 대한 정보는 생략하고, '.101' 부분만 표현하면 된다.

따라서 가수부는 1010 0000 0000 0000 000 이 된다.

Posted by C언어 보이
|

주소와 포인터의 관계

 

%02x 하면..16진수로 2자리를 써서 출력하라는 뜻.

inum의 주소로부터…저장된 값은 98 ef cd ab 00. 이유는 저장방식이 little endian 이므로.

*little endian 실제 메모리에 저장할 때는, 마지막 바이트에 해당하는 숫자를 시작으로 맨 앞 바이트에 해당하는 숫자를 마지막으로 저장하는 방식. 이는 덧셈과정 (덧셈에서는 자리 올림을 이유로 맨 끝자리부터 계산)과 동일하기 때문에, 연산속도에 있어서 big endian 보다 빠름.

*big endian: little endian과 반대 . 연산은 느리나 대소비교가 빠름.

 

 

메모리 주소를 한 바이트씩 이동하면서 저장된 값을 확인한다.

실수의 크기는 32비트 즉 4바이트 이므로, 출력 시에 4바이트 내에 있는 숫자(시작주소+3 즉,icnt 3)에서 표현된 숫자 까지만이 저장된 값이고, 나머지는 실수의 메모리 범위 바깥에 있는 수이다.

 

 

바깥포문을 두 번째 거칠 때에는 메모리 주소가 처음 실수의 주소로부터 16이 더해지므로, 의미가 없는 값 (즉, 실수변수가 아닌 메모리 공간에 저장된 값)이다.

 

Posted by C언어 보이
|

Symbol table은 자료형, 변수명, 주소를 나타내는 테이블

포인터는 주소다. 즉, 특정 메모리 영역 (변수)의 위치를 나타내는 숫자이다.

%08x: 빈자리는 0을 체우고, 8자리를 표현. X는 주소를 16진수로 표현하라는 말. %p와 동일

(int *)0x12FF70 = 100. 케스팅 연산자 * : 괄호안 숫자가 Int형 자료형의 메모리 주소 이며, 4바이트를 쓸 것임을 알려 줌.

 

 

피보나치 수열 프로그래밍

    for(count=3;count<=n;count++)

    {

        printf("Term Number : %d    C¬¢¬ø¨£¢® ùo¯¡© : %d\n",count,three);

        one=two;

        two=three;

        three=one+two;

    }

숫자를 0개, 1개, 2 개 입력한 경우 (count가 0,1, 2인 경우), 각각 분기문으로 받아서 return 0.

 

포인터(*)는 두 가지 의미임. 주소(캐스팅) 및 값..

 

 

Posted by C언어 보이
|

0314 반복문,초기식,조건식,반복식,조건문,for,if else
삼항연산자 : 잘 안쓰며, 쓰라는 권유도 안 함. 다만 해석정도만 할 줄 알면 됌.
반드시 쓸 필요는 없으나..그게 코드상 짧을 때는 써도 뭐.

 

초기식
for (초기식,초기식,, ; 조건(하나만 쓸 수 있음!) ; 반복식,,,)
{
반복식
}

아래 반복문은 결과가 전부 같게 됌

무한루프 탈출방법
ctrl+c,ctrl+brk

조건문 최적화 : 걸릴 확률 높은 걸 첫순위 if 로.

 

#include<stdio.h>

int main()

 /*
 int inum1,inum2;
 inum2=0;
 for (inum1=0;inum1<5;inum1=inum1+1)
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
 inum2=inum2+2;
 printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
 */

 /*
 for (inum1=0,inum2=0;inum1<5;inum1=inum1+1,inum2=inum2+2)
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
  */

 /*
 inum1=0;
 inum2=0;
 while (inum1<5)
 {
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
  inum2=inum2+2;
  inum1=inum1+1;
 }
 */

 /*
 inum1=0;
 inum2=0;
 for (;inum1<5;)
 {
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
  inum2=inum2+2;
  inum1=inum1+1;
 }
 */


 /*
 inum2=0;
 for (inum1=0;inum1<5;inum1=inum1+1)
 {
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
  inum2=inum2+2;
 }
 */

 /*
  for (inum1=0,inum2=0;inum1<5;inum1=inum1+1,inum2=inum2+2)
 {
  printf("inum1 : %d, inum2 : %d \n",inum1,inum2);
 }
 */

 return 0;
}

Posted by C언어 보이
|


0312 폰트, 화면주사방식, 아스키코드, 형변환


나의 출석번호 18

윈도우용 출석번호 +10

리눅스용 출석번호 +40

cmd ftp 접근하는 방법 : ftp 192.168.10.100

user 

password 

1.bin

2.mget *.hwp

3.get main.c

인제부터 보이는 건 전부 리눅스명령어

도스에서 연 ftp끊을 땐 quit


lf : long float 즉 double


폰트. 문자란 존재하지 않는다. 다만 문자처럼 출력하는 픽셀점멸정보에 관한 이진수가 있을 뿐.

alt+숫자 -> 숫자에 해당되는 아스키코드 문자 출력

화면출력방식 픽셀들의 점멸을 이진수로. 따라서..아스키코드에서는 A에 해당하는 2진수에 대하여 


순서버호 65가 부여되어 있음.

화면주사방식 ntsc

             pal

영문푼트(문자출력 이진수?)가 들어있는 곳이 BIOS. basic input output system.  

따라서..우리가 키보드에 a를 치면 컴터안에 a에 해당하는 폰트수?가 입력됌.

'a' : ' '안의 문자에 해당되는 아스키코드 숫자

ascii : america standard code information interchange 미국 표준 코드 정보 교환


아스키코드는..초기에 0~127. 즉 128가지인 7비트만 필요.

하지만..어차피 8비트 단위로 쓰므로..확장 아스키코드가 나옴 (다른 나라 언어 포함하는).

한글폰트들의 분류. 조합형과 완성형


도스영문형 : chcp 437

도스한글형 : chcp 949


아스키코드(8비트)를 저장하기 위해 제일 접합한 자료형은 char (1바이트). char은 정수형 자료형.

참고로..처리속도는 32비트 컴터에서는 32비트(4바이트) 크기인 int가 좋음. 이유는, 안 쓰는 버스


들은 죽이는 신호를 보내야 함으로.

        용량최적화에서는 char임.


/t : 가로(오리엔탈) 텝


int형 변수 값을 char형 변수에 넣을 때 : 하향식 형변환. down casting

부호단위로 넣으며..끝에서 부터 넣는다. 따라서..크기가 다르면 상위바이트의 손실 발생.


반면..int형 변수 값을 float형 변수에 넣을 때. 혹은 소+대 : 상향식 형변환. up casting

정수.0 으로 그대로 들어감. 형동등의 원칙 (자료형이 큰 쪽으로. 상향식 형변환) 

              : 정수형<실수형. 1+1.4=2.4실수형으로.

      1바이트형(->4바이트형으로)+4바이트형


() 형변환 연산자 = (double)num1/num2; ()부터 먼저 처리.

printf(":%3.2f:",11.56789); 3필드폭 지정, 소수점.이후부터는 2자리까지 반올림 표현.

Posted by C언어 보이
|

0311
cpu에 더하는 회로를 alu 라 함.
cpu 3대 구성요소 : 사람이 직접 alu나 cu를 건들이기 힘들고..register를 건들여 register제어기능 사용하여 cpu 동작시킴.
 - alu (arithmatic and logic unit : 산술논리연산 회로. 사칙연산 등. alu 안에 덧셈기 있음)
 - cu (control unit : 외부장치제어 회로.)
 - register : 두가지 개념. 1기능만 있는 레지스터도 있고, 1과 2의 기능을 갖고 있는 레지스터도 있음.
   - 1. cpu 안에 있는 메모리 : cpu와 동급으로 동작하나 가격이 아주 비쌈. 플립플롭(1비트를 기억시키는 회로).
                               연산을 하기 위해 메모리에 있는 변수값을 cpu에 보관하는 장소.
                               레지스터와 메모리 사에에 캐시메모리가 있고 성능은 양자의 중간정도.
   - 2. cu의 성질. 제어.
   * 변수가 저장되는 공간은 레지스터가 아니라 메모리 영역.
&& : inum1전체를 통째로 보아 값을 참조.
&  : 위와 다른 회로 동작. 각 비트를 and 시킴. 비트연산자.
     and 게이트로 inum1와 inum2의 각 비트를 모두 검사, 자리수마다 and 게이트 동작.
inum3=inum1&&inum2; 에서.. 일의 순서는 프로그램 카운터에서 기억?? 메모리 주소 레지스터??
                    ..inum1거짓일 때 &&이후 생략되는 것은 어느 레지스터에서 판단??
틸드 : ~ 비트단위 not 연산자.

#include<stdio.h>
int main()

int inum1,inum2,inum3;
inum1=0xfffffff0;   // 11...0000 : 4바이트 다 쓰고 있음
//inum2=0x4;
inum3=~inum1;
printf("%x %x",inum1,inum3);

return 0;
}

단항연산자 네 가지. |(or) &(and) ~(not) ^(xor)
시프트연산자 >>   요즘은 *4로 해도 컴터가 쉬프트연산자 자동으로 해 줌.


#include<stdio.h>
int main()

int inum1,inum2,inum3;
inum1=0x18;      // 11...0000 : 4바이트 다 쓰고 있음
inum2=inum1>>2;  // 0011
inum3=inum2>>3;  // 0001  나머지 1은 짤려나감
printf("%x %x %x \n",inum1,inum2,inum3);
inum3=inum3<<3;  //1000
printf("%x\n",inum3);

return 0;
}

상수는 메모리에 저장된 값이 아니라..
CPU 연산조건 임??
L value : 변수. 메모리 공간. 변수명은 사실..숫자형 주소명을 문자로 표현해 놓은 것임.
R value : 변수나 상수. 상수가 저장된 공간은? 아님 cpu 연산상태?
변수, 키워드(변수명
으로 사용불가), 키워드처럼 쓰이는 main (엔트리포인트),
상수.

윈도우, 프로그램 설치. 컴터 환경셋팅은 본인이 할 줄 알아야.
vmi로 메모리 할당해서 xp 설치해보면 좋음.
아웃룩 pop3. ip 설정.

const : 변수용 문자를 상수용으로 씀.
sizeof 함수가 아닌 연산자!! sizeof num 가능하나 편의상 혹은 우선순위 때문에 sizeof(num).
sizeof(num1+num2)도..num1 자료형의 크기.

Posted by C언어 보이
|


[수업]

scanf에만 & 있는 이유는 뒤에서 설명.

0x64 : 숫자0. 16진수. 임베디드 (엘이디 킬 때) 프로그래밍시에 16진수 표시형식이 보기 편함 (특정 엘이디 점멸여부 파악 용이).

소수점 지수부. 2의 n승이면 n을 표현하는 부분. 지수부 = 127+지수. 즉.. 지수부 8비트의 경우의 수는 256가지 (0~255). 이를..

0-> -128

255-> +127. 따라서.. 소수점이 들어가면 컴터 느려짐 (저장처리 과정 상).

출석 18번.


[컴퓨터공학, 디지털공학]

- 멀티플렉서 입출력 게이트. 회로구성.


Posted by C언어 보이
|

0307
c 표준.
char=<short=<int=<long
=> 다 같아도 어긴 건 아님..

0을 +로 하는 이유:전기절약,연산속도?
자료형을..반바이트(4비트)만 사용가능??

우리 수업 코딩 시 선언과 동시에 초기화 하지 말 것. 지저분.
선언 시..메모리 할당만
변수명 지정 팁 : cAge (자료형 변수의미).
변수명에..알파벳,숫자,언더바(유일한 특수기호). 숫자 앞에 오는 건 안 됌.
a=7/3 몫이 들어감
b=7%3 나머지가 들어감

iva=inum++; 후치. 대입 후, inum 증가. 대입없이 단독 증가연산은 선치, 후치 차이 없음.
            선치는 선증가 후대입.

inum2=100;
inum1=7||(inum2++);  || (inum2++) 이 부분은 조건검사도, 실행도 하지 않음 (효율적으로 하고자 회로설계를 이렇게 함).

'C언어 업무보고' 카테고리의 다른 글

0311 연산자  (0) 2014.03.11
140310 소수점 float, double  (0) 2014.03.10
0306 변수,라인피드,프린트  (0) 2014.03.07
0305 업무보고 리눅스 파일생성  (0) 2014.03.06
0304 업무일지 전처리,컴파일  (0) 2014.03.04
Posted by C언어 보이
|