C++ 배열을 초기화하는 방법
C++에서 배열을 초기화하는 방법: 1. 먼저 배열을 정의한 다음 배열에 값을 할당합니다. 구문은 "데이터 유형 배열 이름 [길이]; 배열 이름 [아래 첨자] = 값;"입니다. 배열을 정의할 때 구문은 "데이터 유형 배열 이름 [길이]=[값 목록]"입니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, C++17 버전, Dell G3 컴퓨터.
변수 값을 직접 입력하는 것보다 프로그램에서 변수 값을 설정하는 것이 더 적절할 때도 있습니다. 그러나 배열의 각 요소에 대해 별도의 할당문을 작성하면 특히 대규모 배열의 경우 많은 입력이 필요할 수 있습니다.
예를 들어 프로그램을 살펴보세요:
#include <iostream> #include <iomanip> using namespace std; int main() { const int NUM_MONTHS = 12; int days[NUM_MONTHS]; days[0] = 31; // January days[1] = 28; // February days[2] = 31; // March days[3] = 30; // April days[4] = 31; // May days[5] = 30; // June days[6] = 31; // July days[7] = 31; // August days[8] = 30; // September days[9] = 31; // October days[10] = 30; // November days[11] = 31; // December for (int month = 0; month < NUM_MONTHS; month++) { cout << "Month "<< setw (2) << (month+1) << " has "; cout << days[month] << " days.\n"; } return 0; }
프로그램 출력:
Month 1 has 31 days. Month 2 has 28 days. Month 3 has 31 days. Month 4 has 30 days. Month 5 has 31 days. Month 6 has 30 days. Month 7 has 31 days. Month 8 has 31 days. Month 9 has 30 days. Month 10 has 31 days. Month 11 has 30 days. Month 12 has 31 days.
다행히 C++에서는 배열을 정의할 때 배열을 초기화할 수 있는 옵션이 있습니다. 초기화 목록을 사용하면 배열을 만들 때 배열의 모든 요소를 쉽게 초기화할 수 있습니다. 다음 문은 days 배열을 정의하고 이전 프로그램의 할당 문 집합에 의해 설정된 동일한 값으로 초기화합니다.
int days [NUM_MONTHS] = {31,28,31,30,31,30,31,31,30,31,30, 31};
값은 목록에 나타나는 순서대로 배열 요소에 저장됩니다( 첫 번째 값 31은 days[0] 에 저장되고, 두 번째 값 28은 days[1] 에 저장됩니다. 등). 다음 그림은 초기화 후 배열의 내용을 보여줍니다.
다음 프로그램은 위 프로그램을 수정한 버전입니다. 별도의 할당문을 사용하는 대신 days 배열이 생성될 때 초기화됩니다. 초기화 목록은 여러 줄에 걸쳐 분산되어 있습니다. 또한 프로그램은 월 이름을 보관하기 위한 문자열 개체 배열을 추가합니다.
#include <iostream> #include <iomanip> #include <string> using namespace std; int main() { const int NUM_MONTHS = 12; string name[NUM_MONTHS]={ "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"}; int days[NUM_MONTHS] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; for (int month = 0; month < NUM_MONTHS; month++) { cout << setw(9) << left << name[month] << " has "; cout << days [month] << " days. \n"; } return 0; }
프로그램 출력:
January has 31 days. February has 28 days. March has 31 days. April has 30 days. May has 31 days. June has 30 days. July has 31 days. August has 31 days. September has 30 days. october has 31 days. November has 30 days. December has 31 days.
지금까지 배열을 숫자 값으로 채운 다음 모든 값을 표시하는 방법을 보여주었습니다. 그러나 때로는 배열에서 특정 값을 검색하는 등 더 많은 기능이 필요할 수도 있습니다. 다음 프로그램은 사용자가 선택한 달의 일수를 표시하는 위 프로그램의 변형입니다.
#include <iostream> #include <iomanip> #include <string> using namespace std; int main() { const int NUM_MONTHS = 12; int choice; string name[NUM_MONTHS]={ "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"}; int days[NUM_MONTHS] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; cout << "This program will tell you how many days are "<< "in any month.\n\n"; // Display the months for (int month = 1; month <= NUM_MONTHS; month++) cout << setw (2) << month << " " << name [month-1] << endl; cout << "\nEnter the number of the month you want: "; cin >> choice; // Use the choice the user entered to get the name of // the month and its number of days from the arrays. cout << "The month of " << name [choice-1] << " has " << days[choice-1] << " days.\n"; return 0; }
프로그램의 출력 결과는 다음과 같습니다.
This program will tell you how many days are in any month. 1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August 9 September 10 october 11 November 12 December Enter the number of the month you want: 4 The month of April has 30 days.
배열 요소 1에서 시작
실제 모델을 만들 때 논리적으로 1로 시작하는 것들이 많이 있습니다. 교사는 Yu가 학생들에게 요소 0을 사용하지 않고 대신 요소 1부터 시작하는 실제 데이터를 저장하도록 요청하는 것을 선호할 것입니다. 한 해의 개월 수가 좋은 예입니다. 이 경우 이름과 요일 배열을 각각 13개의 요소로 선언하고 다음과 같이 초기화할 수 있습니다.
string name[NUM_MONTHS+1]={" ", "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"}; int days[NUM_MONTHS+1] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
배열 요소 0은 사용되지 않습니다. 그것은 단지 가상의 가치일 뿐이다. 그러면 1월의 이름이 name[1]에 저장되고 2월의 이름이 name[2]에 저장됩니다. 마찬가지로 1월의 일수는 days[1] 요소에 저장되고, 2월의 일수는 days[2] 요소에 저장됩니다.
위 방법을 사용하여 배열을 정의하고 초기화하는 경우 루프를 다음 형식으로 다시 작성해야 합니다. 이전과 같이 배열 요소 0~11 대신 배열 요소 1~12의 내용을 표시합니다.
for (int month = 1; month <= NUM_MONTHS; month++) { cout << setw(9) << left << name[month] << " has "; cout << days[month] << " days.\n"; }
실제 데이터가 요소 1부터 저장되면 특정 데이터를 찾기 위해 배열 첨자에 1을 추가할 필요가 없습니다. 다음은 각 월의 번호와 이름을 나열하는 구문을 수정한 것입니다.
for (int month = 1; month <= NUM_MONTHS; month++) cout << setw (2) << month << " " << name [month] << endl;
사용자가 선택한 달의 일수를 표시하는 코드를 다음과 같이 수정해야 합니다.
cout << "The month of " << name[choice] << " has "<< days [choice] << " days . \n";
배열 부분 초기화
배열이 초기화될 때 C++는 각 요소의 값을 얻을 필요가 없으며 아래와 같이 배열의 일부만 초기화할 수도 있습니다.
int numbers[7] = {1, 2, 4, 8};
이 정의 초기화만 가능 7개 요소 배열의 처음 4개 요소가 아래 그림에 표시되어 있습니다.
그림 2
그림 2의 초기화되지 않은 요소는 모두 0으로 설정된다는 점을 언급할 가치가 있습니다. 숫자형 배열이 부분적으로 초기화되면 이런 일이 발생합니다. 문자열 개체의 배열이 부분적으로 초기화되면 초기화되지 않은 요소에는 모두 빈 문자열, 즉 길이가 0인 문자열이 포함됩니다. 부분적으로 초기화된 배열이 로컬로 정의된 경우에도 마찬가지입니다. 그러나 로컬 배열이 완전히 초기화되지 않은 경우 해당 요소에는 다른 로컬 변수와 마찬가지로 "쓰레기"가 포함됩니다.
다음 프로그램은 부분 초기화 후 숫자 배열의 내용을 보여줍니다.
#include <iostream> using namespace std; int main () { const int SIZE = 7; int numbers[SIZE] = {1, 2, 4, 8}; // Initialize the first 4 elements cout << "Here are the contents of the array: \n"; for (int index = 0; index < SIZE; index++) cout << numbers [index] << " "; cout << endl; return 0; }
프로그램 출력:
Here are the contents of the array: 1 2 4 8 0 0 0
배열 초기화 목록은 배열 요소보다 더 적은 값을 가질 수 있지만 더 많은 값을 가질 수는 없습니다. 배열 값의 요소보다. 숫자 배열에는 7개의 값만 포함될 수 있지만 초기화 목록에는 8개의 값이 포함되어 있으므로 다음 명령문은 올바르지 않습니다.
int numbers [7] = {1, 2, 4, 8, 3, 5, 7, 9}; //不合法
또한 요소가 초기화되지 않은 상태로 남아 있으면 해당 요소 이후의 모든 요소도 초기화되지 않은 상태로 남아 있어야 합니다. C++에서는 초기화 목록의 요소를 건너뛰는 방법을 제공하지 않습니다. 또 다른 불법적인 예는 다음과 같습니다.
int numbers [7] = {1, , 4, , 3, 5, 7}; // 不合法
암시적 배열 크기
可以通过提供一个包含每个元素值的初始化列表来定义一个数组而不指定它的大小。C++ 会计算初始化列表中的项目数,并为数组提供相应数量的元素。例如,以下定义创建 了一个包含5个元素的数组:
double ratings [] = {1.0,1.5,2.0,2.5,3.0};
注意,如果省略大小声明符,则必须指定一个初始化列表。否则,C++ 不知道该数组有多大。
初始化变量的新方法
到目前为止,已经介绍过的定义和初始化常规变量的方法是使用赋值语句,示例如下:
int value = 5;
但是,我们已经学习过使用函数、数组以及类,所以现在是时候来介绍另外两种在定义变量的同时即进行初始化的方法。
第一种新方法是使用函数符号初始化变量。它看起来就像是给一个函数传递参数。如果您已经掌握了类的内容,那么就会注意到,它也很像是在创建类对象时给一个构造函数传递值。以下是使用函数符号定义变量 value 并初始化其值为 5 的示例语句:
int value (5);
第二种初始化变量的新方法是 C++ 11 中新引入的,使用大括号表示法。它看起来就像是刚刚上面所看到的初始化数组的方法,但是其中有两点区别:
因为常规变量只能一次保存一个值,所以通过这种方法初始化变量时,大括号中只有一个值;
和数组初始化列表不一样,通过这种方法初始化变量时,在大括号前面没有赋值运算符(=)。
以下是使用大括号表示法定义变量 value 并初始化其值为5的示例语句。
int value{5}; //该语句仅在C++ 11或更高版本中合法
绝大多数程序员会继续使用赋值运算符来初始化常规变量,本书也将如此,但是,大括号表示法提供了一项优点,它会检查用来初始化变量的值,并确保匹配变量的数据类型。例如,假设 doubleVal 是一个 double 类型变量,存储在其中的值为 6.2。则使用赋值运算符时,可以编写以下两种形式的语句之一:
int valuel = 4.9; //该语句将给valuel赋值为。4 int vaule2 = doubleVal; // 该语句将给 value2 赋值为 6
在这两种情况下,值的小数点部分都会被先截断,然后才赋值给被定义的变量。这虽然可能会导致一些问题,但 C++ 编译器是允许的,它也会提出警告,但却仍然能生成可执行文件,并且可以运行。不过,如果在这里使用的是大括号表示法,则编译器会指出这些语句产生了一个错误,并且不会生成可执行文件。必须先修复该错误,然后重新编译项目才能运行该程序。
相关推荐:《C++视频教程》
위 내용은 C++ 배열을 초기화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C에서 숯 유형은 문자열에 사용됩니다. 1. 단일 문자를 저장하십시오. 2. 배열을 사용하여 문자열을 나타내고 널 터미네이터로 끝납니다. 3. 문자열 작동 함수를 통해 작동합니다. 4. 키보드에서 문자열을 읽거나 출력하십시오.

언어의 멀티 스레딩은 프로그램 효율성을 크게 향상시킬 수 있습니다. C 언어에서 멀티 스레딩을 구현하는 4 가지 주요 방법이 있습니다. 독립 프로세스 생성 : 여러 독립적으로 실행되는 프로세스 생성, 각 프로세스에는 자체 메모리 공간이 있습니다. 의사-다일리트 레딩 : 동일한 메모리 공간을 공유하고 교대로 실행하는 프로세스에서 여러 실행 스트림을 만듭니다. 멀티 스레드 라이브러리 : PTHREADS와 같은 멀티 스레드 라이브러리를 사용하여 스레드를 만들고 관리하여 풍부한 스레드 작동 기능을 제공합니다. COROUTINE : 작업을 작은 하위 작업으로 나누고 차례로 실행하는 가벼운 다중 스레드 구현.

C35의 계산은 본질적으로 조합 수학이며, 5 개의 요소 중 3 개 중에서 선택된 조합 수를 나타냅니다. 계산 공식은 C53 = 5입니다! / (3! * 2!)는 효율을 향상시키고 오버플로를 피하기 위해 루프에 의해 직접 계산할 수 있습니다. 또한 확률 통계, 암호화, 알고리즘 설계 등의 필드에서 많은 문제를 해결하는 데 조합의 특성을 이해하고 효율적인 계산 방법을 마스터하는 데 중요합니다.

STD :: 고유 한 컨테이너의 인접한 중복 요소를 제거하고 끝으로 이동하여 반복자를 첫 번째 중복 요소로 반환합니다. STD :: 거리는 두 반복자 사이의 거리, 즉 그들이 가리키는 요소의 수를 계산합니다. 이 두 기능은 코드를 최적화하고 효율성을 향상시키는 데 유용하지만 : std :: 고유 한 중복 요소를 다루는 것과 같이주의를 기울여야합니다. 비 랜덤 액세스 반복자를 다룰 때는 STD :: 거리가 덜 효율적입니다. 이러한 기능과 모범 사례를 마스터하면이 두 기능의 힘을 완전히 활용할 수 있습니다.

C의 Release_Semaphore 함수는 다른 스레드 또는 프로세스가 공유 리소스에 액세스 할 수 있도록 얻은 수피를 해제하는 데 사용됩니다. 세마포어 수를 1 씩 증가시켜 차단 스레드가 계속 실행 될 수 있습니다.

C 언어에서 뱀 명칭은 코딩 스타일 컨벤션으로 여러 단어를 연결하여 여러 단어를 연결하여 가변 이름 또는 기능 이름을 형성하여 가독성을 향상시킵니다. 편집 및 운영에는 영향을 미치지 않지만 긴 이름 지정, IDE 지원 문제 및 역사적 수하물을 고려해야합니다.

Dev-C 4.9.9.2 컴파일 오류 및 솔루션 Windows 11 시스템에서 프로그램을 컴파일 할 때 Dev-C 4.9.9.2를 사용하여 다음과 같은 오류 메시지를 표시 할 수 있습니다. gcc.exe : aborted (programcollect2) pleasesubmitafullbugreport.seeforinstructions. 최종 "컴파일은 성공적"이지만 실제 프로그램은 실행할 수 없으며 오류 메시지 "원본 코드 아카이브를 컴파일 할 수 없습니다"가 팝업됩니다. 일반적으로 링커가 수집하기 때문입니다

C는 시스템 프로그래밍 및 하드웨어 상호 작용에 적합합니다. 하드웨어에 가까운 제어 기능 및 객체 지향 프로그래밍의 강력한 기능을 제공하기 때문입니다. 1) C는 포인터, 메모리 관리 및 비트 운영과 같은 저수준 기능을 통해 효율적인 시스템 수준 작동을 달성 할 수 있습니다. 2) 하드웨어 상호 작용은 장치 드라이버를 통해 구현되며 C는 이러한 드라이버를 작성하여 하드웨어 장치와의 통신을 처리 할 수 있습니다.
