본문 바로가기

C&C++_Basic/C_Pointer

2개의 double 포인터 변수 입력받고 최대 최소간 사칙연산 다음을 참고로 표준입력으로 받은 double 형의 두 실수의 사칙연산을 수행하는 프로그램을 작성하시오. 두 개의 double 형 변수를 선언하여 표준입력을 받음 두 개의 double 형 포인터 변수를 선언하여 위 두 실수에 대한 사칙연산을 수행 #include # define MAX(x,y) ((x)>(y))? x : y # define MIN(x,y) ((x) 더보기
Double 을 int byte로 나눠서 사칙연산 다음을 참고로 표준입력으로 받은 int 형의 두 정수의 사칙연산을 수행하는 프로그램을 작성하시오. double 형 변수의 8바이트 저장 구조를 각각 4바이트의 저장 구조로 생각해서 표준입력으로 받은 두 정수를 저장 두 정수에 대하여 사칙연산을 수행 #include # define MAX(x,y) ((x)>(y))? x : y # define MIN(x,y) ((x)> &a : 주소값을 인자로 넣어주는 것 %d , %(d+4) / &(d+sizeof(int)) */ // 정수로 받겠습니다. 라는 표현. // , 8개로 선언해주되 // 앞 4byte는 int, 뒤에 +4 주소값해서 또 int 받기. // 즉, scanf 가 꼭 initialiation과.. 더보기
C언어 char변수 16진수 4칙연산 char 변수에 저장된 16진수 4칙연산 프로그램을 작성하시오. 하나의 16진수는 2자리로 이루어진다. (예: 3F ). 덧셈의 경우 3F 와 1B를 문자로 입력 받고 각각은 char 형 변수에 저장된다. 3F는 char a0=’3’, a1 = ‘F’ 이 각각 저장되고, 1B도 마찬가지로 char b0=’1’, b1=’B’ 에 각각 저장된다. 연산자도 별도의 char형 변수에 저장된다. 연산결과는 곱셈을 고려하면 최대 4자리를 차지하므로 char c0, c1, c2, c3 에 저장한다. 실행예: 연산식을 입력하시오>> 3F 1B + 5A 연산식을 입력하시오>> 3F 1B - 24 연산식을 입력하시오>> 3F 1B * 6A5 연산식을 입력하시오>> 3F 1B #include int main() { int .. 더보기
C언어 char* int* 형변환 다음과 같이 int 형 변수 value에 0x2F24263F를 정의한 후, char * 변수 pc를 선언하고, pc 변수를 이용하여 value의 저장 값을 각각 byte 단위로 인지하여 각각의 문자를 출력하는 프로그램을 작성하시오. value n = 0x2F24263F; 각각 2F는 문자 ‘/’, 24는 ‘$’, 26은 ‘&’, 3F는 ‘?’이며, 순서는 이의 역순으로 출력 즉 ? & $ / 순으로 출력하며, 각각의 주소 값도 출력한다 #include int main() { int value = 0x2F24263F; int *pi = &value;//주소값을 정수로 받고 pi = &value char *pc = (char*)&value;//형변환을 통해 문자로 변환 pc =&value 기 // char는.. 더보기
C언어 원금,예금출력 원금이 1,000,000인 경우, 예치 기간을 1년에서 10년까지 매년 말에 받을 총 금액을 출력 년단위 단리이자 = 원금 * 이율(4.5%) * 년(예치기간) 만기 시 총 수령액(단리적용) = 원금(1 + 이율(4.5%) * 년(예치기간)) #include int main() { int x = 1000000; int year; for(year=1;year 더보기
#C언어 배열 : 이차원 " 배열 포인터 " #include int main() { int ary[][4] = { 5,7,6,2,7,8,1,3}; /* 5 7 6 2 7 8 1 3 */ int (*ptr)[4] = ary; printf("%2d, %2d\n", **ary, **ptr++);// 1행 1열 value 출력 printf("%2d, %2d\n", **(ary+1), **(ptr++)); // 1행 2열 value 출력 ptr = ary; // 다시 초기화 해주는 것. 이후 ary와 ptr 값이 달라지므로 ( 위에서 ptr 후위 증감) printf("%2d, %2d\n", *(ary[1]+1),*(ptr[1]+1)); // 2행 2열을 출력 printf("%2d, %2d\n", *(*(ary + 1) +1),*(*(ptr + 1) +1)).. 더보기
# C언어 포인터 : const 포인터 상수 기초 1( 포인터에 붙이기 VS 상수에 붙이기 ) #include int main() { // 기본원리 : const 바로 뒤에 붙은 애는 변경할 수 없다. //1, " const type * 변수" 형태 ( type 앞에 const 가 붙을 때 ) int i =10, j =20; const int *p = &i; printf("%d\n",*p); // 10 p = &j; printf("%d\n",*p); // 20 /* 설명 *p를 상수로 고정한다는 것이다. 즉, *p는 무조건 고정된 값이고, 설령 *p 혹은, p를 바꾸고 싶다고 하더라도 *p는 변경할 수 없다 즉, 만약 *p 혹은 p 를 변화시키고자 한다면 p 를 변화시켜야 한다 예를 들어, *p = j ; 이렇게 하면 error 가 뜬다 위의 코드를 보면, *p 가 처음에는 i 를 출력하고 있었다.. 더보기
# C언어 포인터 : 이중 포인터 기초 1 #include int main() { int i =20; int *pi = &i; int **dpi = π /* int *pi = &i; 는 다음과 같이 표현할 수도 있다. >> int *pi; pi = &i; 즉, 다시 말해서, pi 는 i 의 주소값을 가리키는 포인터이다. 그러므로 출력시 *pi = i , 즉, i 의 상수값이 출력된다. 이번에는 int **dpi 를 살펴보자 int **dpi = π 도 다른 식으로 표현될 수 있다. >> int **dpi ; dpi = π 이제 **dpi 즉, 이와 같이 **가 2개 붙으면, 이중 포인터라고 생각하면 된다. 이중 포인터 dpi 는 포인터 pi 의 주소값을 가리키는 것. 그러므로 *dpi 는, 포인터 pi 의 '값'을 가리킬 것인데, 여기서 pi 의.. 더보기