Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #CSRF #
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터의포인터 #c언어2중포인터
- C언어 #C #C프로그래밍 #프로그래밍 #언어
- c언어malloc #동적할당 #c언어동적할당 #c언어malloc사용하기
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터배열 #c언어포인터 #포인터 #c포인터
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터와문자열 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #포인터 #포인터변수 #c언어주소 #주소
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #선택정렬 #선택정렬알고리즘
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #robots.txt #검색엔진노출
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #phpcodeinjection #injection
- #FAT파일시스템 #파일시스템구조 #파일시스템 #Forensic #정보보안 #IT
- 파일시스템과파티션 #포렌식 #사이버포렌식 #Encase #Forensic #파티션 #파일시스템 #정보보안
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #로또번호생성 #로또번호만들기 #중복제거 #중복제거알고리즘
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #Call by value #Call by reference
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #SQLi #TimeBaseSQLi #sqlinjection
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터 #c언어포인터연산
- 포렌식 #사이버포렌식 #Forensic #정보보안 #IT
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #commandinjection
- 사이버포렌식 #포렌식 #FAT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c배열포인터 #c언어포인터 #c언어배열포인터 #배열포인터
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #xss #storedxss #CrossSiteScripting
- c언어문자열처리방법 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #C동적메모리할당 #malloc #메모리
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #bruteFource #무차별공격
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c2차원배열동적할당 #c언어동적할당 #c동적할당 #c언어동적할당2차원배열
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #PUT메소드 #PUT #HTTP메소드 #취약점
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #SQLi #sqlinjectioon
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #BrokenAuthentication
- XSS #ReflectedXSS
Archives
- Today
- Total
Hello Security World
C언어 [C언어 포인터와 문자열] 본문
포인터와 문자열
C언어에서는 문자열을 처리를 위한 데이터 타입은 제공되지 않는다. 그렇기 때문에 문자열을 처리하기 위해서는
배열이나 포인터를 이용해야 한다. 배열과 포인터 변수를 사용하여 문자열을 처리하는 두가지 방법의 특징을 정리하면
다음과 같다.
배열을 사용할 경우 | 포인터 변수를 사용할 경우 |
문자열을 구성하는 각각의 문자가 배열 요소의 값으로 저장 | 포인터 변수는 문자열이 보관된 주소만을 가짐 |
사용되는 메모리 크기는 배열의 크기와 동일 | 문자열은 따로 메모리에 저장되기 때문에 포인터 변수의 크기와 문자열의 크기를 합한 공간이 필요함 |
문자형 배열로 문자열을 처리하기 위해서는 Null('\0') 문자를 함께 저장할 공간을 반드시 확보 해야 한다 문자열의 실제 길이보다 1byte크게 지정해야 한다. 그 이유는 Null을 만나야 문자열의 끝이라는 것을 컴파일러가 인식하기 때문이다.
예제) 배열과 포인터를 사용해 문자열을 처리하는 프로그램
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> //포인터를 사용하여 배열 요소의 합을 구하는 프로그램 int main() { char strarr[] = "ARRAY HELLO"; //배열의 크기는 자동으로 지정 char* str = "POINTER HELLO"; int i,j; printf("배열로 선언 : "); for(i=0;i<15;i++){ printf("%c",strarr[i]); } printf("\n포인터로 선언 : "); for(j=0;j<15;j++){ printf("%c",str[j]); } return 0; } 실행 결과 배열로 선언 : ARRAY HELLO 포인터로 선언 : POINTER HELLO |
위와 같이 두가지의 방법으로 C언어 에서는 문자열을 처리할수 있다. 문자열을 처리함에 있어 java는 String이라는 데이터 타입이
존재하지만 C언어는 배열 이나 , 포인터로 정의해야 한다. 그게 C언어의 매력이 아닐까 생각한다.