c+배열 정의 및 초기 화 상세 설명
배열 의 요 소 는 연속 메모리 위치 에 저 장 됩 니 다.요 소 는 배열 색인 을 통 해 접근 할 수 있 습 니 다.최저 주 소 는 첫 번 째 요소 에 대응 하고 최고 주 소 는 마지막 요소 에 대응 합 니 다.
성명 배열
예컨대
고정된 길 이 를 설명 하 는 배열:
const int Size = 5;
int arr[Size] = {3, 6, 9, 12, 15};
arr[3] = 42;
메모:괄호[]의 내용(배열 의 요소 의 수량 을 표시 합 니 다)은 상수 표현 식 이 어야 합 니 다.배열 은 정적 메모리 블록 이기 때문에 컴 파일 할 때 크기 를 정 해 야 프로그램 이 실 행 됩 니 다.배열 초기 화
int arr[] = { 10, 20, 30, 40 }
고정 길 이 를 설명 하 는 배열 이 동시에 초기 화 됩 니 다.
const int Size = 5;
int arr[Size] = { 10, 20, 30, 40 }
이 설명 방식 은 정적 배열 을 정의 하 는 데 사 용 됩 니 다.정적 배열 에 필요 한 메모리 크기 는 컴 파일 할 때 확인 해 야 합 니 다.배열 은 스 택 에 분 배 됩 니 다.그러나 어떤 경우 에는 실행 할 때 만 프로그램의 메모리 수 요 를 확인 할 수 있 습 니 다.예 를 들 어 언제 저장 공간 이 필요 한 지 는 사용자 의 입력 에 달 려 있다.이 경우 프로그램 은 메모 리 를 동적 으로 할당 해 야 합 니 다.이 를 위해 C+언어 는 연산 자 new 와 delete 를 통합 합 니 다.
동적 배열
연산 자 new 를 사용 하여 동적 메모 리 를 분배 합 니 다.new 다음은 데이터 형식 설명자 입 니 다.하나 이상 의 요소 서열 이 필요 하 다 면 괄호[]에 이러한 요소 의 수량 을 포함 합 니 다.그것 은 분 배 된 새 메모리 블록 을 가리 키 는 시작 지침 을 되 돌려 줍 니 다.문법:
pointer = new type
pointer = new type [number_of_elements]
예:
int * foo;
foo = new int [5];
이러한 상황 에서 시스템 은 int 형식의 다섯 가지 요소 에 게 동적 으로 공간 을 분배 하고 첫 번 째 요 소 를 가리 키 는 지침 을 되 돌려 줍 니 다.이 지침 은 foo(하나의 지침)에 분 배 됩 니 다.따라서 foo 는 현재 다섯 개의 int 형식의 요소 가 있 는 유효한 메모리 블록 을 가리 키 고 있 습 니 다.
여기 서 foo 는 포인터 이기 때문에 표현 식 foo[0]또는 표현 식*foo(둘 다 같은 효 과 를 가 진)를 사용 하여 foo 가 가리 키 는 첫 번 째 요 소 를 방문 할 수 있 습 니 다.foo[1]또는*(foo+1)를 사용 하여 두 번 째 요 소 를 방문 할 수 있 습 니 다.이에 따라...
정적 배열 과 동적 배열 의 가장 중요 한 차이 점 은 정적 배열 의 크기 는 상수 표현 식 이 어야 하기 때문에 프로그램 을 설계 할 때 크기 를 확인 한 다음 에 실행 해 야 하 며,new 에서 실 행 된 동적 메모리 분 배 는 실 행 될 때 모든 변수 값 을 크기 로 사용 하여 메모 리 를 분배 할 수 있 습 니 다.foo 는 동적 데 이 터 를 가리 키 는 지침 이기 때문에 이 데 이 터 를 삭제 하고 새 데 이 터 를 이 지침 에 할당 할 수 있 습 니 다.
int* foo = new int[5]; // arr now points to a dynamic array of size 5
delete[] foo;
foo = new int[10]; // arr now points to a dynamic array of size 10
delete[] foo;
foo = new int(5); // arr now points to a single int, of value 5.
delete foo;
2 차원 동적 배열 생 성
int** a = new int*[rowCount];
for(int i = 0; i < rowCount; ++i)
a[i] = new int[colCount];
요약:정적 배열 과 동적 배열 의 차이
1.정적 배열 의 크기 는 컴 파일 기간 에 확정 되 고 분 배 된 것 으로 그 안에 사용 이 끝 난 후에 컴퓨터 에서 자동 으로 방출 되 고 효율 이 높다.동적 배열 은 프로그램 이 실 행 될 때 프로그래머 가 실제 수요 에 따라 메모리 에서 동적 으로 신청 하고 사용 이 끝 난 후에 프로그래머 가 방출 하 며 효율 이 낮다.
2.정적 배열 에 대해 size of 연산 을 할 때 결 과 는 전체 배열 의 크기 이 고 동적 배열 에 대해 size of 연산 을 할 때 주소 자릿수 가 4 바이트 이기 때문에 결 과 는 상수 4 이다.
3.주소 지정 의 측면 에서 볼 때 정적 배열 은 직접 주 소 를 찾 는 것 이 고 동적 배열 은 모두 두 번 의 주소 지정 이다.이것 은 동적 배열 자체 의 실현 과 관계 가 있다.정적 배열 의 변수 자체 가 배열 의 첫 번 째 요소 의 주소 입 니 다.동적 배열 의 변 수 는 신청 공간 을 가리 키 는 첫 번 째 주소 포인터 입 니 다.int arr[Size]에서 arr 자체 가 메모리 주소 이 고 int*foo 에서 foo 는 포인터 로 주 소 를 가리 키 고 있 습 니 다.
보충 지식:c+,c 중 배열 의 기본 값 을 0 으로 초기 화 하 는 방법
1.전역 변수 만 들 기
int sum[1000006];//기본 값 0 으로 초기 화
2.부분 변수 만 들 기
기본 값 은 0 으로 설정 할 수 있 고 초기 화 할 때 만 0(sum[100]={0}으로 설정 할 수 있 습 니 다.이렇게 쓰 면 틀린 것 이다.
1 로 설정 하면 sum[0]만 1 이 고 다른 기본 값 은 모두 0 입 니 다.
int sum[100]={0};//0 으로 설정 할 수 있 습 니 다.
3.할당
실제 뜻 은 순환 할당 0 과 같 습 니 다.다만 이것 은 라 이브 러 리 가 봉 인 된 방법 입 니 다.
\#include
memset(sum,0,sizeof(sum));
이상 의 c++배열 의 정의 와 초기 화 에 대한 상세 한 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hdu 1717 소수 화 점수 2 (수학)소수 화 점수 2 레이 는 수학 시간 에 선생님 의 말씀 을 듣 고 모든 소수 가 점수 로 표시 되 는 형식 이 라 고 말 했다. 그 는 녹 기 시 작 했 고 곧 완성 되 었 다. 그러나 그 는 또 하나의 문 제 를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.