C 언어 부정 장수 그룹 및 초기 화 방법

C 언어 는 부정 확 한 배열 을 지원 하지 않 습 니 다.malloc 나 동적 으로 길 이 를 지정 합 니 다.
동적 배열 은 초기 화 할 수 없습니다.memset 를 사용 할 수 있 습 니 다.
1.int* p = (int*)malloc(num);
2.int num = 5;
arr[num];
arr[]를 사용 하려 면 뒤에서 정렬 하여 길 이 를 초기 화해 야 합 니 다.그렇지 않 으 면 컴 파일 을 통과 할 수 있 습 니 다.그러나 기본 값 은 한 단원 만 있 고 한 단원 의 길 이 를 초과 하면 뒤의 프로그램 이 실 행 될 때 지 워 질 수 있 습 니 다.

int arr[] = {0};//          ,        
배열 을 정의 하기 전에 arr[]={0}을 사용 하지 않 는 것 이 좋 습 니 다.

int arr[256] = {0};
int a[256]={0};a 의 모든 요 소 를 0,int a[256]={1}으로 초기 화 하 는 것 이 아 닙 니 다.a 의 모든 요 소 를 1 로 초기 화 하 는 것 도 아 닙 니 다.
배열 은 열 값 으로 초기 화 할 수 있 습 니 다.예 를 들 어

int v1[] ={1,2,3,4};
char v2[]={'a','b','c',0};
배열 이 정 의 될 때 크기 가 지정 되 지 않 았 습 니 다.초기 화 는 목록 으로 초기 화 되 었 을 때 배열 의 크기 는 초기 화 할 때 목록 요소 의 개수 에 의 해 결 정 됩 니 다.그래서 v1 과 v2 는 각각 int[4]와 char[4]유형 이다.배열 크기 를 명확 하 게 지정 하면 초기 화 할 때 지정 한 요소 의 개수 가 이 크기 를 초과 하면 오류 가 발생 합 니 다.예 를 들 면:

char v3[2] ={'a','b',0}; //  :        
char v3[3] ={'a','b',0}; //  
초기 화 할 때 지정 한 요소 의 개수 가 배열 크기 보다 적 으 면 나머지 요 소 는 0 으로 초기 화 됩 니 다.
예컨대

int v5[8]={1,2,3,4};
등가

int v5[8]={1,2,3,4,0,0,0,0};
다음 형식의 배열 할당 이 없 음 을 주의 하 십시오.

void f()
 {
 v4={'c','d',0}; //  :      
}
말 그대로 집합(aggregate)은 여러 사물 이 한데 모 이 는 것 이다.이 정 의 는 혼합 유형의 집합 을 포함한다.예 를 들 어 struct 와 class 등,배열 은 단일 유형의 집합 이다.
집합 을 초기 화 하 는 것 은 지루 하고 오류 가 발생 하기 쉬 우 며,C+에서 집합 초기 화(aggregate initialization)는 편리 하고 안전 합 니 다.집합 대상 이 생 겼 을 때 해 야 할 일 은 초기 값 만 지정 하면 되 고 초기 화 작업 은 컴 파일 러 가 맡 는 다.이 지정 은 처리 중인 집합 유형 에 따라 몇 가지 다른 스타일 을 사용 할 수 있다.그러나 어떤 경우 든 지 지 정 된 초기 값 은 대괄호 로 묶 어야 한다.
예 를 들 어 내부 형식의 배열 은 이렇게 정의 할 수 있 습 니 다.

int a[5] = { 1, 2, 3, 4, 5 };
초기 화 값 이 배열 요소 의 개수 보다 많 으 면 컴 파일 러 는 오류 메 시 지 를 보 냅 니 다.그러나 데이터 요소 보다 적은 개 수 를 초기 화하 면 어떻게 될 까?
예 를 들 면:

int b[6] = {0};
이때 컴 파일 러 는 첫 번 째 초기 화 값 을 배열 의 첫 번 째 요소 에 부여 한 다음 0 으로 나머지 요소 에 부여 합 니 다.초기 값 을 제시 하지 않 고 배열 을 정의 하면 컴 파일 러 는 초기 화 작업 을 하지 않 습 니 다.그래서 위의 표현 식 은 하나의 배열 을 0 으로 초기 화 하 는 간결 한 방법 입 니 다.
이상 의 C 언어 부정 장수 조 및 초기 화 방법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 될 수 있 고 여러분 의 많은 성원 을 바 랍 니 다.

좋은 웹페이지 즐겨찾기