일부 규칙에 따라 전역 변수 변수를 증가시키고 참조로 변수를 전달하는 함수가있는 경우 반환해야합니까, 아니면 변수가 업데이트됩니까? 이것은 로컬 변수에서도 작동합니까? 예를 들어 :변수의 주소를 전달하면 반환해야합니까?
static uint8_t counter = 1;
void add(uint8_t *variable)
{
if (*variable == 5)
{
*variable = 7;
} else if (*variable == 20)
{
*variable = 1;
} else
{
*variable++;
}
}
그리고 어디 선가 '추가'함수를 호출 좋아 :
void function(void)
{
... some code...
add(&counter);
... some code...
}
어쩌면 나는 잘못하고있다.이 문제를 해결할 더 좋은 방법이있다. – NitrogenAir
전역 (하지만'static') 변수가 있고'add' 함수가 같은 번역 단위에 있다면 , 왜 처음부터 논쟁을해야합니까? –
이 코드는 일반적으로 거의 의미가 없지만 실제로는 포인터의 값을 전달하는 것처럼 보입니다 (ref가 아닌). 변수가 전역이면 전달할 필요가 없습니다. 또한 add에서 두 개의 역 참조가 필요하지 않을 수도 있습니다. – George