문자열 과 배열
1. 배열 반복 요소
배열 a [N] 에 1 ~ N - 1 개의 수 를 저장 하 였 으 며, 그 중 한 개의 수 는 한 번 반복 되 었 다.중복 요 소 를 찾 으 려 면 시간 복잡 도 는 O (N) 여야 합 니 다.
2. 배열 과 지침 의 차 이 를 약술 한다.
포인터
배열
데이터 저장 주소
데이터 저장
간접 접근 데이터
직접 접근 데이터
보통 동적 데이터 구조 에 사용
보통 고정 수량 유형 이 같은 요 소 를 저장 하 는 데 사 용 됩 니 다.
관련 조작 new, delete 등
암시 적 할당 및 삭제
또 한 가지 일 깨 워 줄 것 은:
char a[] = "abcdefg"; // ( )
char *p = "abcdefg"; // ( )
C / C + + 에 서 는 포인터 가 초기 화 될 때 만 든 문자열 을 읽 기 전용 으로 정의 합 니 다.
3. 배열 의 오프셋
다음 프로그램 을 실행 하여 출력 결 과 를 구 합 니까?
#include
using namespace std;
int main()
{
int a[5] = {1, 2, 3, 4, 5};
int* ptr = (int*)(&a + 1);
cout << *(a + 1) << ", " << *(ptr - 1);
return 0;
}
출력 결과: 2, 5
이 문 제 는 a 와 a 의 차 이 를 고찰 한다.
& a + 1 은 첫 번 째 주소 + 1 이 아 닙 니 다. 시스템 은 a [] 의 오프셋 을 더 한 것 이 배열 의 크기 를 오프셋 한 것 이 라 고 생각 합 니 다.& a 는 배열 지침 이기 때문에 그 유형 은 int (*) [5] 이다.반면 지침 + 1 은 지침 유형 에 따라 일정한 값 을 더 해 야 하 며, 유형 별 지침 + 1 이후 증가 하 는 크기 가 다르다.
a 는 길이 가 5 인 int 배열 지침 이기 때문에 5 * sizeof (int) 를 추가 해 야 합 니 다. ptr 는 실제 a [5] 입 니 다.그러나 ptr 는 (& a + 1) 유형 과 다 르 기 때문에 ptr - 1 은 sizeof (int *) 만 뺀 다.
a. & a 의 주 소 는 같 지만 의미 가 다 릅 니 다. & a 는 대상 (배열) 의 첫 번 째 주소 이 고 a 는 배열 의 첫 번 째 주소 입 니 다. 즉, a [0] 의 주소 입 니 다. a + 1 은 배열 의 다음 요소 의 주소 입 니 다. 즉, a [1] 이기 때문에 출력 결 과 는 2 입 니 다.a + 1 은 다음 대상 의 주소, 즉 a [5] 이기 때문에 ptr - 1 의 값 은 a [4] 이기 때문에 출력 결 과 는 5 입 니 다.
4. 다 차원 배열 의 출력
int a[2][2][3] = {{{1, 6, 3}, {5, 4, 15}}, {{3, 5, 33}, {23, 12, 7}}};
for (int i = 0; i < 12; i++)
cout << ______ << endl;
빈 칸 에 적당 한 문 구 를 쓰 고 a 의 숫자 를 순서대로 출력 합 니 다.
a[i / 6][(i / 3) % 2][i % 3]
첫 번 째, 여섯 번 째 순환 은 모두 0 을 취하 고 여섯 번 째 순환 은 모두 1 을 취하 기 때문에 i / 6 은 요 구 를 만족 시 킬 수 있다.2 차원, 앞의 세 번 은 0 을 취하 고 세 번 은 1 을 취하 고 세 번 은 0 을 취하 고 세 번 은 1 을 취하 고 계량 화 된 사상 으로 i / 3 은 12 개의 숫자 를 4 조로 나 누 어 각각 3 개 로 0, 1, 2, 3 으로 계량 화 시 켰 다. 0, 1, 0, 1 을 얻 기 위해 여 기 는 나머지 가 필요 하기 때문에 (i / 3)% 2 가 있다.3 차원 은 (0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2) 이 필요 하기 때문에 i% 3 이 있다.
5. 문자 배열 의 입력
5 개국 의 영어 이름 을 입력 하고 영어 이름 의 이니셜 을 찾 아 출력 하 며 알파벳 순 으로 맨 앞 에 있 는 그 나라 의 이름 을 입력 하 세 요.
#include
#include
using namespace std;
int main()
{
char a[5][30];
char c[30];
int i;
for (i = 0; i < 5; i++)
cin.getline(a[i], 30, '
');
strcpy(c, a[0]);
for (i = 5; i > 1; i--)
if(strcmp(c, a[i]) > 0)
strcpy(c, a[i]);
cout << c << endl;
return 0;
}
6. 문자열 관련 함수
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.