c & c++/포인터7 함수 포인터 어떠한 하나의 함수안에서 다른 함수를 인자로 받아 사용하는 방법 ex) 정렬 함수 안에서 특정 정렬 함수를 인자로 받아 사용함 버블정렬 함수 함수선언 함수호출 및 결과 2022. 8. 5. 문자열 #include #include int main(void) { //문자열 //포인터 차이점 wchar_t swct[10] = L"abcdef"; //const wchar_t* wct = L"abcdef"; // 2byte로 읽어야하기때문에 무조건 const로 선언해줘야함 wchar_t* wct = (wchar_t*)L"abcdef";// (wchar_t* 로 강제형변환 가능하지만 문제발생) swct[1] = 'z'; //swct[10] 배열의 값이 바뀜 wct[1] = 'z'; //값이 변하지만 ROM에 설정된 값자체가 바뀌기때문에 큰 오류발생 //컴파일, 링크에서 문제가 안돼서 exe파일까지 만들어지지만 런타임 오류발생 return 0; } 2022. 7. 22. void 포인터 #include int main(void) { void* pVoid = nullptr; int* pInt = nullptr; { int a = 0; float f = 0.f; double d = 0.; long long ll = 0; pVoid = &a; pVoid = &f; pVoid = &d; pVoid = ≪ } return 0; } void* 의 특징 1. 원본의 자료형을 정하지 않음 2. 어떠한 타입의 변수의 주소든 다 저장 가능 ( 데이터의 원형을 특정한 자료형으로 보지 않기 때문) 3. 역참조 불가능 4. 주소 연산 불가능 2022. 7. 22. 포인터 문제 2 #include #include int main(void) { //문제 2 char cArr[2] = { 1, 1 }; short* pS = (short*)cArr; int data = *pS; printf("%d ", data); return 0; } 2022. 7. 20. 포인터 문제 1 #include #include int main(void) { //포인터 문제 1 short sArr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int* pI = (int*)sArr; int data = *((short*)(pI + 2)); printf("% d", data); //값은 5 return 0; } 2022. 7. 20. 정수배열과 포인터 2022. 7. 20. 포인터 2022. 7. 20. 이전 1 다음