#include <stdio.h>
int main()
{
int iTemp;
int iHalf;
int iCnt;
printf("2\n");
for(iTemp=3; 50>=iTemp;iTemp+=2) //홀수 출력
{
iHalf=iTemp/2;
iCnt=3;
while(iCnt <= iHalf) //소수 검색
{
if(iTemp%iCnt ==0)
{
break;
}
iCnt+=2;
}
if(iCnt < iHalf)
{
continue; //위로 올라간다 for문 으로 간다(iTemp+=2)
}
printf("%d\n",iTemp);
}
return 0;
}
제 5 장 포인터의 개념과 텍스트 파일
5.1 변수의 값과 주소
//변수의 값과 주소를 출력하는 프로그램
#include <stdio.h>
int main()
{
int x;
x = 25;
printf("the value of x: %d\n\n",x); //변수 x의 값을 출력
printf("the address of x: %p\n",&x); //변수 x의 주소값 출력
printf("the address of x: %u\n",&x); //주소값을 unsigned로 출력
printf("the address of x: %p\n",0x30); //주소값 0x30출력
printf("the address of x: %p\n",48); //주소값 48의 16진수인 0x30 출력
return 0;
}
모든 변수는 주소값을 가진다.
위에서 &x의 &은 주소연산자라고 한다.
%p 는 16진수 출력을 보기편하게 하기위해서 쓴 것으로 주소값 구하는곳에 반드시 %p가 필요하지는 않다.
리눅스, 윈도우는 주소값이 다르다.
Symbol table 작성
자료형(Type) |
이름(Name) |
주소(Address) |
int |
x |
0xbffffa28 |
char 1바이트, short 2바이트, int 4바이트의 주소가 사용된다.
5.2 포인터 변수
우리가 쓰는 32비트 컴퓨터 메모리의 주소값의 MAX가 [FF][FF][FF][FF] 이므로 이 주소값을 나타내려면 4바이트
가 필요하다. 그러므로 포인터 변수의 크기는 4바이트가 된다.
int *ip; //포인터 변수의 선언
변수이름앞에 *을 붙여서 포인터 변수로 사용한다. *ip 의 자료형은 포인터 타입이며 포인터형 안에 인트, 플롯
캐릭터 등등 의 형이 오게된다.
#include <stdio.h>
int main()
{
int x;
int *xp; //xp는 int형의 포인터변수로 선언됨
x=7; //변수 x의 초기화
xp=&x; // 변수 xp가 x의 주소값으로 초기화
printf("address of x: %p\n",&x); //변수 x의 주소
printf("value of x: %d\n",x); //변수 x의 값
printf("address of xp: %p\n",&xp); //포인터변수 xp의 주소
printf("value of xp: %p\n",xp); //포인터변수 xp의 값
printf("value of *xp: %d\n",*xp); //xp가 가리키는 곳의 값
return 0;
}
|
|
|