처음 만나는 클라우드 보안

[JAVA] 프로그래밍 - 전위연산과 후위연산 & 포인터 개념 본문

JAVA

[JAVA] 프로그래밍 - 전위연산과 후위연산 & 포인터 개념

영민하게 2022. 7. 9. 18:02
반응형

2022 7/9 스터디 내용 정리

 프로그래밍 언어 5가지 요소

☞ 변수와 값, 연산자, 흐름 제어(조건문,, 함수, 자료구조

 반복문 

● While 반복문 선언의 조건

  1. 최초 조건 선언 ex) i=0
  2. 반복문 수행 조건
  3. 반복문 탈출 조건

 For반복문 선언의 조건

  1. for (선언, 조건)
  2. 반복문 빠져나갈 조건 생성

While VS FOR

☞ while은 유연하다 반복문 탈출 조건의 이동이 자유롭기 때문이다. For은 간결하다. 모든 조건의 위치가 고정되었기 때문


 정보처리기사 프로그래밍 관련

1. 전위연산 & 후위 연산 (C만 해당됨)

  • 전위 연산자: y=++i; 연산이 우선순위
  • 후위 연산자: x=i++; 대입이 우선순위

(예시문제)

후위연산으로 While문 안의 조건은 선대입, 후연산 진행. 하지만, JAVA에선 while조건절에 Boolen형이 허용되지 않는다.

 

2. 포인터 (Pointer)

● 프로그래밍 변수 종류

  1. 기본형(원시형): int, char, float, double, boolen - 메모리 중 Stack에 값이 존재한다.
  2. 참조 변수(Reference) - , 메모리 중 Heap에 값이 존재 Stack에는 Heap의 주소가 존재한다. Stack으로 다 사용하기엔 빠르고 비싸서 효용성이 떨어지기 때문

 

● C 표시자의 의미

  * : 가리키는 곳의 값 / Stack에 주소를 넣겠다.
  & : 변수의 주소를 리턴한다. 

 

- 예시 1

int*b;        //    포인터를 사용하겠다는 선언(Stack을 레퍼런스 주소로 사용)

int*b=10;        //    b가 가리키는 곳의 값은 10이다.

printf("% d", b); = 2001        //    주소 값 출력

printf("% d",*b); = 10        //    heap값 출력

 

- 예시 2

int a =10;

int*b;

b=&a        //    b값에 a메모리의 주소 값을 대입

*b = 10        //    a의 값

(예시문제)

pt의 값으로 n의 주소값이 입력되었다. 따라서 &pt의 포인터값은 n의 주소값이 된다. 수식에선 &n과 상쇄되어 없어진다.

- 실제 C언어 코딩 결과

#include <stdio.h>

int main(void){
    int n = 4;
    int* pt = NULL;
    pt = &n;

    printf("answer = %ld\n", &n + *pt - *&pt + n);
    printf("&n = %p\n", &n);
    printf("*pt = %d\n", *pt);
    printf("*&pt = %p\n", *&pt);
    printf("n = %d\n", n);
    return 0;
}

&n과 이중포인터 *&pt는 동일한 주소값을 반환한다.

- 이중 포인터

int n = 4

int*pt1=&n

int**pt2 =&pt1;        //    값에 주소 값이 들어가야 해당 수식은 참

*pt2 = ox100

**pt2 = 4

*pt1 = 4


스터디자료

https://ssy02060.github.io/

 

SanYoonie 개발 블로그

이것저것 올리는 블로그입니당…✨

ssy02060.github.io

반응형
Comments