[c++] C ++를 사용하여 한 줄에 여러 변수를 선언하고 정의하려면 어떻게해야합니까?

나는 항상이 세 가지 변수를 선언하면 모두 0 값을 갖습니다.

int column, row, index = 0;

그러나 인덱스 만 0이고 다른 것은 844553 및 2423445와 같은 정크입니다.

각 변수를 새 줄에 선언하지 않고 이러한 변수를 모두 0으로 초기화하려면 어떻게해야합니까?



답변

int column = 0, row = 0, index = 0;


답변

선언 할 때 :

int column, row, index = 0;

인덱스 만 0으로 설정됩니다.

그러나 다음을 수행 할 수 있습니다.

int column, row, index;
column = index = row = 0;

그러나 개인적으로 나는 지적 된 다음을 선호합니다.
내 견해로는 더 읽기 쉬운 형태입니다.

int column = 0, row = 0, index = 0;

또는

int column = 0;
int row = 0;
int index = 0;


답변

@Josh가 말했듯이 정답은 다음과 같습니다.

int column = 0,
    row = 0,
    index = 0;

포인터로 같은 것을 조심해야합니다. 이:

int* a, b, c;

다음과 같습니다.

int *a;
int b;
int c;


답변

한 줄에 하나의 변수 / 객체를 선언하면이 문제를 해결할뿐만 아니라 포인터를 선언 할 때 코드를 더 명확하게하고 어리석은 실수를 방지합니다.

그러나 질문에 직접 대답하려면 각 변수를 0으로 명시 적으로 초기화해야합니다. int a = 0, b = 0, c = 0;.


답변

int column(0), row(0), index(0);

이 형식은 특히 생성자가 둘 이상의 인수를 사용할 때 사용자 정의 유형에서도 작동합니다.


답변

2k18부터는 구조적 바인딩을 사용할 수 있습니다 .

#include <iostream>
#include <tuple>

int main ()
{
    auto [hello, world] = std::make_tuple("Hello ", "world!");
    std::cout << hello << world << std::endl;
    return 0;
}

Demo


답변

가능한 접근법 :

  • 모든 지역 변수를 0으로 초기화하십시오.
  • 배열 memset또는 {0}배열이 있습니다.
  • 전역 또는 정적으로 만듭니다.
  • 를 넣어 struct, 그리고 memset제로로 초기화 할 생성자를 가지고있다.