일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- #FAT파일시스템 #파일시스템구조 #파일시스템 #Forensic #정보보안 #IT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터 #c언어포인터연산
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c배열포인터 #c언어포인터 #c언어배열포인터 #배열포인터
- 파일시스템과파티션 #포렌식 #사이버포렌식 #Encase #Forensic #파티션 #파일시스템 #정보보안
- c언어malloc #동적할당 #c언어동적할당 #c언어malloc사용하기
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #bruteFource #무차별공격
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c2차원배열동적할당 #c언어동적할당 #c동적할당 #c언어동적할당2차원배열
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #CSRF #
- 포렌식 #사이버포렌식 #Forensic #정보보안 #IT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터의포인터 #c언어2중포인터
- c언어문자열처리방법 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #phpcodeinjection #injection
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #robots.txt #검색엔진노출
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터와문자열 #c언어문자열
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #xss #storedxss #CrossSiteScripting
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #Call by value #Call by reference
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #로또번호생성 #로또번호만들기 #중복제거 #중복제거알고리즘
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #commandinjection
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #PUT메소드 #PUT #HTTP메소드 #취약점
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #BrokenAuthentication
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #선택정렬 #선택정렬알고리즘
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터배열 #c언어포인터 #포인터 #c포인터
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #포인터 #포인터변수 #c언어주소 #주소
- 사이버포렌식 #포렌식 #FAT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #C동적메모리할당 #malloc #메모리
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #SQLi #TimeBaseSQLi #sqlinjection
- XSS #ReflectedXSS
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #SQLi #sqlinjectioon
- Today
- Total
Hello Security World
C언어 [C언어 포인터의 연산] 본문
포인터의 연산
포인터에 대한 증감 연산은 일반 연산처럼 증감값을 더하거나 빼라는 의미는 아니고 포인터 변수를 선언한 데이터 타입의
크기만큼 더하거나 빼라는 의미이다. 즉 프로그램에서 포인터 변수 '*p'를 선언하여 일반 변수 'a'의 값을 저장한 'po' = &a;'
(포인터 변수에는 오직 주소만 들어감) 변수에 'po+1'을 더할 경우 '35+1' 이 되지 않는다. 값이 저장되어 있는 메모리 공간
의 주소 '1244996'에 1을 더함은 int형(4byte) 로 포인터 변수가 선언 되었다면 메모리 공간의 4byte를 증가시켜 메모리주소
'1244996+4' 가 되는것이다.
유형 | 연산자 |
산술 연산자 | +,-,++,-- |
주소 연산자 | &,* |
대입 연산자 | =,+=,-= |
기타 연산자 | sizeof |
이러한 연산자만 포인터 변수에 사용할 수 있고 곱하거나 나누기 같은 연산은 수행하지 못한다. 다만, 포인터 변수끼리는 뺄셈만 가능하고
덧셈은 처리할 수 없음 을 반드시 알아두어야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> void main(){ int num,*p; num=28; p=# printf("일반 변수 num의 값[%d] \n",num); printf("포인터 변수 *p의 값[%d] \n",*p); printf("포인터 변수 p-1의 값[%d] \n",p-1); printf("주소 &num의 값을 대입한 p의 값[%d] \n",p); printf("포인터 변수 opt+1의값[%d] \n",p+1); } 출력결과: 일반 변수 num의 값[28] 포인터 변수 *p의 값[28] 포인터 변수 p-1의 값[6487616] 주소 &num의 값을 대입한 p의 값[6487620] 포인터 변수 opt+1의값[6487624] |
포인터 변수에서의 증감 연산자 활용 예
활용 예 | 설명 |
*po + 1 | 포인터 변수 po가 가르키고 있는 주소에 저장된 값을 1증가 |
*(po+1) | 포인터 변수 po가 갖고 있는 주소를 1증가 시킨 후 주소의 값을 구함 |
*po++ | 포인터 변수 po가 가리키는 주소의 저장된 값을 구한 후 p를 1증가 |
(*po)++ | 포인터 변수 po가 가르키고 있는 주소의 저장된 값을 구한 다음 그 값에 1을 증가시킴 |
*++po | 포인터 변수 po를 1 증가 시킨 다음에 해당 주소에 있는 값을 구함 |
++*po | 포인터 변수 po가 가르키고 있는 값을 구한 다음에 그 값을 1을 더함 |
예제) 포인터를 사용하여 배열 요소의 합을 구하는 프로그램
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> //포인터를 사용하여 배열 요소의 합을 구하는 프로그램 int main() { int i; int hap=0; int arr[5] = {10,20,30,40,50}; int* p; p = arr; //배열은 & 사용하지 않음 왜냐? 배열은 그 자체로 배열 시작주소를 가짐 for(i=0;i<5;i++) { hap+= *(p+i); } printf("배열의 각 원소의 합은 %d 입니다",hap); } 실행결과 배열의 각 원소의 합은 150 입니다 |
'프로그래밍 > C' 카테고리의 다른 글
C언어 [C언어 포인터 배열] (0) | 2020.05.03 |
---|---|
C언어 [C언어 문자열 처리 방법] (0) | 2020.05.03 |
C언어 [C언어 주소와 & 포인터] (0) | 2020.05.03 |
C언어 [로또번호 생성기 & 중복제거] (0) | 2020.05.03 |
C언어 [Call By Value & Call By Reference] (0) | 2020.05.03 |