#include <stdio.h>
void set_flag(int* flag_holder, int flag_position){
*flag_holder |= (1 << flag_position);
}
void set_flag(int* flag_holder, int flag_position);
int main(int argc, char* argv[])
{
int flag_holder = 0;
int i;
set_flag(&flag_holder, 3);
set_flag(&flag_holder, 16);
set_flag(&flag_holder, 31);
다음 내용은 혼란 스럽습니다. 포인터가 void set_flag() 내에 있다고 생각하는데, 그 값을 3, 16, 31로 설정하면 확실하지 않다는 것을 알았습니까? &
포인터가있는 함수를 C로 이해하려고 시도했습니다.
set_flag(&flag_holder, 3);
set_flag(&flag_holder, 16);
set_flag(&flag_holder, 31);
'| '는 비트 OR 연산자입니다. 먼저 비트 연산자에 대해 읽어야합니다. – Raman
이것은 함수에 관한 것이 아니라 단지'flag_holder | = (1 << 3);/* ... * /'는 동등한 것일 것입니다 – Veltas
'flag_position'은 설정하려는 *** 비트 ***입니다. 귀하의 예를 들어, '0..31' 범위. 먼저 'flag_holder'의 비트 3을 설정 한 다음 비트 16을 설정하고 마지막으로 31을 설정합니다. –