C++ 포인터 알고리즘

C++ 포인터 알고리즘

2022-06-04 last update

7 minutes reading C++
우리는 바늘이 변수의 메모리 주소라는 것을 알고 있으며, 통상적으로 숫자이다.이것이 바로 우리도 지침에 대해 약간의 산술 계산을 할 수 있는 이유다.이 계산들은 우리가 수학이나 프로그래밍에서 수치에 대해 한 것처럼 진행할 수 있다.따라서 우리는 C++를 사용하는 강좌 안내서에서 지침의 산술 연산을 토론할 것이다.우리는 G++ 컴파일러가 설치되어 있는지 확인하기 위해 Ubuntu 20.04 시스템을 사용해 왔다.Ubuntu 20.04 시스템 단말기 셸에서 바늘 알고리즘의 실현을 시작으로 데스크톱에서 사용하는 단축키 Ctrl + Alt + T를 사용합니다.

예 1:


C++ 코드의 첫 번째 예시를 시작합니다. 파일을 통해 포인터에 산술 연산자'+'를 사용합니다.다양한 방법으로 파일을 만들 수 있지만 가장 간단한 방법은 터치 명령을 사용하는 것입니다.따라서 Touch 키워드와 콘솔에 생성할 파일 제목을 사용하고 Enter 키를 누릅니다.이 파일은 Ubuntu 20.04 기본 폴더에서 생성됩니다.
새로 만든 파일을 열려면 Ubuntu 20.04와 함께 제공되는 내장 편집기, 즉vim, 텍스트 편집기, GNU nano 편집기를 사용할 수 있습니다.다음 그림과 같이 셸에서 계속 사용하기 때문에 GNU Nano 편집기를 사용하는 것이 좋습니다.

지금까지 이 파일 "pointer.cc"는 편집기에서 귀속을 해제했습니다.우리는 첫 번째 줄에 입력 출력 헤더 파일을 포함하고 두 번째 줄에는 표준 이름 공간을 사용했다.값이 8인 정수 변수 "v"를 초기화했습니다.다음 연속 줄에서 정수 형식 바늘'p'를 초기화합니다.이 포인터는 변수'v'의 주소입니다. 변수'v'가'&'기호를 사용하여 귀속되기 때문입니다.이것은 우리가 수시로 가변표의 주소를 변경할 수 있다는 것을 의미한다.표준적인cout문구가 잇따라 사용되고 있다.첫 번째는 포인터'p'로 저장된 변수'v'의 원래 주소를 표시합니다.
다음 줄에서,cout 문장은 바늘의 주소를 1씩 증가시켜 표시합니다.다음 두 줄은 포인터를 사용하여 값을 각각 2와 3씩 증가시킵니다.점차적으로 증가하는 값이cout 문장과 함께 표시됩니다.코드는 여기서 끝냅니다.실행하기 전에 코드를 저장합시다.이렇게 하려면 Ctrl+S를 사용하십시오.터미널로 돌아가려면 GNU Nano 편집기를 종료해야 합니다.이렇게 하려면 Ctrl+X 단축키를 사용합니다.이것은 + 연산자 증가 포인터를 사용하는 가장 간단한 C++ 코드입니다.

셸로 돌아가면 코드에 오류가 없어야 합니다.C++ 컴파일러는 이러한 지속성을 실현하는 데 사용됩니다.컴파일러 키워드'g++'는 컴파일할 파일 이름과 함께'pointer.cc'를 사용합니다.컴파일은 성공했습니다. 왜냐하면 어떤 내용도 되돌려 주지 않았기 때문입니다.오류 없는 코드를 실행하려면 "."를 사용하십시오.a, out 표준 명령.우리는 변수'v'의 네 개의 다른 주소를 얻었다.
첫 번째는 변수 "v"의 원래 주소 "p"입니다.두 번째 값은 1, 세 번째 값은 2, 마지막 값은 3.증량을 실행할 때마다 주소의 마지막 두 문자는 다음과 같이 변경됩니다.

예 2:


바늘에 감량 연산자를 사용하는 예를 하나 더 들자.그래서 우리는 줄곧 같은 오래된 파일 "pointer.cc"를 사용하고 있다.이름 공간과 input-output 헤더의 사용 방식은 이전과 같습니다.또 다른 상수 정형 변수's'는 상수 값 5로 초기화됩니다.main () 방법에서, 우리는'v'라는 정수 형식의 그룹을 사용했는데, 크기는's'이며, 그 중에는 다섯 개의 요소가 포함되어 있다.정수 포인터'p'가 선언되었습니다.포인터가'&'기호를 사용하여 정수 그룹'v'와 연결되었습니다.
크기는 s-1 주소에서 시작됩니다."for"순환이 초기화되었습니다. 크기 5부터 시작하여 매번 1씩 줄이고 내림차순으로 작업합니다."for"순환이 작동할 때마다 표준cout 문장을 사용하여 순환이 반복되는 색인 번호의 메모리 주소와 특정 색인에 대한 값을 표시합니다.'p'는 색인 주소를 표시하고 *p는 이 특정 색인에 대한 값을 표시합니다.매번 교체할 때마다 바늘이 1씩 줄어든다.순환은 여기서 끝났고, 주 함수도 여기서 끝났습니다.

먼저 C++ 언어의 g++ 컴파일러를 사용하여 코드를 컴파일합니다.오류가 없습니다.실행은.a.out 명령으로 수행됩니다.우리가 얻은 출력은 아래와 같다.색인 내림차순으로 배열된 5, 4, 3, 2, 1의 특정 색인 메모리 주소를 볼 수 있습니다.다른 한편, 마지막 값까지 내림차순으로 반복될 때마다 우리는 특정한 색인마다 값을 얻는다.

예 3:


바늘의 새로운 실례를 하나 봅시다.이 예에서, 우리는 바늘 주소와 포함된 값을 비교할 것이다.따라서 문서 포인터.cc가 GNU Nano 편집기에서 시작되었습니다.main () 함수는 코드 파일의 표준 이름 공간과'io'플러그 다음에 초기화되었습니다.이것은 두 개의 문자열 형식 변수 s1과 s2를 포함하는데, 그 문자열 값은 완전히 다르다. 즉, "Aqsa"와 "Yasin"이다.
그 다음에'='기호를 사용한'&'문자는 두 문자열 형식의 바늘 변수 p1과 p2를 초기화했습니다. 변수 s1과 s2로 제한되어 있습니다.이것은 바늘 p1이 변수 s1의 주소이고 p2는 변수 s2의 주소라는 것을 의미한다.
첫 번째 표준cout 자구는 두 바늘의 비교 결과, 즉 두 문자열 변수의 주소를 표시하는 데 사용됩니다.주소가 같으면 셸에 1을true로 표시하고, 그렇지 않으면 0을false로 표시합니다.두 번째 표준cout 자구는 특정 바늘 주소에 저장된 값을 비교하는 데 사용됩니다.값이 같으면 1을 반환하고 그렇지 않으면 0을 반환합니다.비교 절차는 여기서 끝납니다.

먼저 C++ 코드를 컴파일하고 실행합니다.두 번 비교한 결과는 모두 0, 즉 가짜였다.이것은 바늘 주소와 이 주소의 값이 모두 다르다는 것을 의미한다.

코드를 좀 수정합시다.같은 파일을 열고 문자열 값을 업데이트합니다.같은 값(즉 Aqsa)을 사용하여 같은 문자열 변수 s1과 s2를 초기화합니다.코드의 나머지 부분의 사용은 우리가 이전에 한 것과 같다.업데이트된 결과를 얻기 위해 코드를 저장합니다.

우리는 0 을 바늘 주소로 비교한 결과를 얻었다. 왜냐하면 두 변수는 모두 다른 메모리 주소를 포함하고 1 은 값으로 비교한 결과이다. 즉, 두 문자열의 값이 같기 때문이다.


결론:


우리는 이미 지침에서 집행하는 산술 연산을 토론했다.우리는 지침에 점증과 점감산술 연산자를 사용했다.우리는 또한 비교 연산자가 두 개의 서로 다른 바늘에 있는 작업을 설명하기 위해 추가 예시를 토론했다.