2014 C/3월

2014.03.25

솔♡ 2014. 3. 25. 15:03


char* const cp = str;

->const는 값을 바꿀 수 없다 는 뜻

->즉 cp는 값을 바꿀 수 없다.


 #include <stdio.h>


int main()
{
  char str[]="Good morning!";
  char* cp1;
  char* cp2;

  cp1=str;

  printf("%c\n",*cp1);
  printf("%s\n",cp1);
  printf("%s\n",str);

  //++cp1;

  cp1 = cp1+5;
  printf("%s\n",cp1);
  printf("%s\n",str+5);
  cp2 = str;
  printf("%c\n",str[0]);
  printf("%c\n",cp2[0]);
  return 0;
}

G

Good morning!

Good morning!

morning!

morning!

G

G


*(str+1)

*(cp2+1)

cp2[1]

str[1]


->다 똑같은 결과가 나오는 선언


printf("%c\n",*(str+1));

printf("%c\n",*(cp2+1));

printf("%c\n",cp2[1]);

printf("%c\n",str[1]);

o

o

o

o

->Good morning! 의 o가 출력됨.

다 똑같은 결과가 나온다.




-> 8번째 줄의 printf(cp1,100,500); 은 cp1에 100과 50의 인자를 대입시키는 명령인데, cp1은 보다시피 포인터변수로

-> str의 주소를 가르키고 있다. 그러면 100과 50의 인자는 cp1이 향하는 str주소 즉 미리 써놓은 "%d %d \n"의 문자열로 향한다.

-> 컴파일로 읽어들일때 %d 와 %d에 각각 100과 50의 인자를 전달한다.


printf형의 기본

int printf(const char *format);

-> format은 없어도 된다는 뜻.

-> 주소값만 있으면 출력이 가능하다는 뜻





-**-




원래 코드영역은 값을 변경할 수 없다.

하지만 변경 된 것은 저정도의 간섭은 허용한다고 판단했기 때문....(해킹위험있음ㅠㅠ)

리눅스에서 실행하면 경고가 뜸

-**-