이차원 배열 값 한번에 바꾸기..?

realian의 이미지

안녕하세요.. 하다가 좀 간단하고 깨끗해 보이는(?) 방법이 없을까해서요..

int a[10][10] = {0};

이렇게 되어 있는 배열 a 를.. 모든 값을 다 1 로 바꾸고 싶습니다.

간단하게 이중 for 문 쓰면 되지만.. 왜인지 안깔끔해 보여서..

memset 이용할까 싶어서 찾아봤더니..
memset ( void *, char value, int size ) 더군요.
바이트 단위로 값을 입력하기때문에.. 무효 ㅡ.ㅡ;; int는 4바이트이니..

그냥 혹시나 하고 해봤더니.. 역시 이진수00000001000000010000000100000001에 해당하는 값이 입력됩니다..

혹시 간단한 방법이 있나요..?

cedar의 이미지

C++이라면

std::fill(&a[0][0], &a[9][10], 1);

또는

std::fill(a, a + 10 * 10, 1);

또는

std::fill_n(a, 10 * 10, 1);

이렇게 하면 컴파일러는 한 개의 for문을 사용한 루프와 동일한 코드를 생성합니다.

moonzoo의 이미지

특정 함수를 써서 한번에 처리한는건 잘 모르겠구요..

예를 들어 int a[9][5]; 배열을 1로 초기화 하고 싶다면

for( i = 0 ; i < 9*5 ; i++) *(*a + i) = 1;

이렇게 하는 것이 이중 for문 돌리는 것 보다는 깔끔할 듯 싶습니다.