- 음악과 나 -/『 짬 통 』

SSDN

noon2dy 2006. 4. 14. 16:49

//-----------------------------------------------------
// 화면관련

void GotoXY(int x, int y)
{
     COORD Cur;
     Cur.X=x;
     Cur.Y=y;
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
}

도스 콘솔 크기 : 80 x 25

 

//-----------------------------------------------------
// #include <windows.h>
typedef struct _COORD {
    SHORT X;
    SHORT Y;
} COORD,  *PCOORD;

Sleep() -> 대문자 'S' ! (너무 헤멨다...-_-)

short int : 2byte  ( 2^16 = 65536 => -32768~32767 )

 

//-------------------------------------------------------
// #include <stdlib.h>
system( "cls" );

 

 

//-------------------------------------------------------
// <stdio.h>

int ungetc(
   int c,  // Character to be pushed.
   FILE *stream  // Pointer to FILE structure.
);
 

//-------------------------------------------------------
//

void main()
{
     int i;
     int *pi;
     int **ppi;
 
     i=1234;
     pi=&i;
     ppi=&pi;
 
     printf("%d\n",**ppi);
}

 

따져보기.

i == *pi == **ppi
&i == pi == *ppi
*&i == *&*pi == *&**ppi

 

//-------------------------------------------------------
// 함수로 포인터 넘기기
*************************************
void InputName(char *pName)
{
     pName=(char *)malloc(12);
     strcpy(pName,"Cabin");
}

void main()
{
     char *Name;
 
     InputName(Name);
     printf("이름은 %s입니다\n",Name);
     free(Name);
}
*************************************

***********************************
void InputName(char **pName)
{
     *pName=(char *)malloc(12);
     strcpy(*pName,"Cabin");
}
 
void main()
{
     char *Name;
 
     InputName(&Name);
     printf("이름은 %s입니다\n",Name);
     free(Name);
}
*************************************
의 차이점...

 


//-------------------------------------------------------
// 2006.4.6 오후 7:16

알고리즘 숙제중에..
fatal error LNK1120: 1 unresolved externals " 라고 발생..
한참 찾다가..
함수 선언부의 인자중에 const 선언이 있었는데.
함수 몸체엔 그 const를 없앴었다..
그래서. LNK1120 발생.

.

//-------------------------------------------------------
// 4월7일 4:49

자꾸 헷갈리지말고
확실히 하기

int x = 1, y = 5;
int z[10];
int *p;

p = &x;  // x의 주소를 포인터 변수 p로
y = *p;  // p가 가리키는곳의 내용(= rValue) 를 y로
*p = 0;  // 0을 p가 가리키는 주소로(= lValue)
p = &z[2]; // &z[2]의 주소를 포인터변수 p로( p가 z[2]를 가리키도록)

ㅡ z[2]는 단순히 int형의 하나의 변수임.
a의 어드레스 -> &a
따라서 z[2]의 어드레스 -> &z[2] 이다.

ㅡ 배열의 이름이 나타나면그 배열의 선두요소의 포인터다
int a[10];
에서 a 는 a[0]의 포인터가되고, 값으로는 &a[0] (=a[0]의 주소)을 가진다.

ㅡ c언어에서 [] 는 하나의 연산자이기때문에
a + b 나 b + a 처럼,  a[3] 과 3[a]는 같은 표현이지.

ㅡ C에서는 값에의한(복사) 호출밖에 없다.
포인터를 사용한 주소호출은, 그 주소를 "값"으로 사용한 호출이다
,.. but. 이것은 사실상 "참조에 의한호출" 과 같다

ㅡ 문자열은 문자의 배열. -_-

ㅡ char str[] = "ABC"; => 배열의 각 요소에 초기값을 설정하는것
   char *str = "ABC"; => 포인터변수가 가리키는 주소(ABC의 선두문자의 주소)를
    이 변수의 초기값으로 설정하는것