본문 바로가기

전체 글

(499)
자료 ㅇㅇㅇㅇ
Call By [Value, Pointer, Reference] void Call_By_Reference(int &n) { n++; return; } void Call_By_Value(int n) { n++; return; } void Call_By_Pointer(int *n) { (*n)++; return; } int main() { int a=0; Call_By_Value(a); printf("%d\n",a); Call_By_Reference(a); printf("%d\n",a); Call_By_Pointer(&a); printf("%d\n",a); ================================= 0 1 2
int값 입력받아서, 비트값 출력하기(재귀함수) void bitCheck(int input,int check) // 입력 숫자 , 비트 자리수 { int checkBit=1; if(check
비트검사 int main() { int a= 0x3a7d; int input; int zeroOne; int check=1; int scanfCheck=0; while(1) { printf("a변수의 몇 승 bit를 검사할까요? : "); scanfCheck = scanf("%d",&input); if(!scanfCheck) break; for(int i=1;i
비트 연산 char a=0xff, res; res = a >> 3; printf("%#x\n",res); unsigned char b=0xff, res1; res1 = b>>3; printf("%#x\n",res1); 0xffffffff : signed는 sign bit로 채움. 0x1f : unsigned는 0으로 채움. printf 할 때 프린트버퍼에 먼저 들어가는 데, 4바이트 단위로 들어감. 1바이트 char를 넘길 때, 확장해서 넘김. unsigned가 들어 갈 때, 확장 시 0으로 확장해서 0000001f 이므로 ,1f만 찍힘. signed일 경우에는 sign bit로 확장. ffffff가 확장됨.
배열의 이름과 주소값 char* arr[10]; printf("arr: %p &arr : %p\n",arr,&arr); arr: 0012FF58 &arr : 0012FF58 배열의 이름 값은 주소이며, 배열의 이름값의 &는 동일한 주소값을 가리키며, 단지 차원을 높이는 역할만 함.
예약 영역 vs 미예약영역 1: int arr[3]={1,2,3}; 2: printf("%d\n",arr[3]); 3: arr[3] = 5; arr[0]~arr[2] : 예약영역 기타 미 예약 영역 예약영역 : 쓰기 및 읽기 가능 미예약영역 : 쓰기 불가, 읽기 가능 2번까지는 출력(쓰레기 값) 3번은 런타임에러 : 미예약영역에 쓰기 시도
Lvalue / Rvalue Lvalue에는 변수만 가능 Rvalue에는 변수 및 상수 모두 가능. Lv = Rv 1. type 2. 차원 이 동일해야함. 일반상수는 무조건 0차원 주소상수는 최소 1차원 이상 차원조절 연산자 * [] & (type) -> int main(int argc, char* argv[]) { char ch3[2]; ch3="a"; return 0; } 에러. ch3는 배열의 주소값. 배열의 주소값은 "주소상수"임 Lvalue 에는 상수가 안 됨.