나는 항상이 세 가지 변수를 선언하면 모두 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;
}
답변
가능한 접근법 :
- 모든 지역 변수를 0으로 초기화하십시오.
- 배열
memset
또는{0}
배열이 있습니다. - 전역 또는 정적으로 만듭니다.
- 를 넣어
struct
, 그리고memset
제로로 초기화 할 생성자를 가지고있다.