개인공부(113)
-
C언어 - 포인터의 호환성(Compatibility)
문법적으로 가능하지만 사용하기를 권장하지 않는 내용들. #define _CRT_SECURE_NO_WARNINGS #include int main() { ///* Pointer Compatibility */ //int n = 5; //double x; //x = n;//no error //int* p1 = &n; //double* pd = &x; //pd = p1; // warning //// int를 double에 넣는 건 가능하나 warning //int* pt;//그냥 포인터 //int(*pa)[3];//3개짜리 원소를 가진 배열에 대한 포인터를 담을수 있는 그릇 //int ar1[2][3] = { 3, }; //int ar2[3][2] = { 7, }; //int** p2;// 이중포인터 //pt ..
2020.11.12 -
C언어 - 2차원 배열과 포인터
배열의 이름은 주소이다.( 첫번째 원소의 주소) arr 이름이 a[0][0] 주소가 아니라 &arr[0] 이다. arr[0]과 &arr[0]이 배열에서는 같다. 하지만 포인터의 배열에서는 달라진다. #define _CRT_SECURE_NO_WARNINGS #include int main() { float arr2d[2][4] = { {1.0f,2.0f,3.0f,4.0f},{5.0f,6.0f,7.0f,8.0f} }; //주소가 같다 printf("%u\n", (unsigned)arr2d); printf("%u\n", (unsigned)arr2d[0]); printf("\n"); // arr2d points to arr2d[0] (not arr2d[0][0]) //주소가 다 같다 printf("%u\n", ..
2020.11.12 -
C언어 - 포인터의 배열과 2차원 배열
포인터의 배열을 이용한다면 배열의 배열을 만들수 있지않을까? 배열의 배열은 2차원배열 혹은 다차원 배열을 떠올릴수있다. #define _CRT_SECURE_NO_WARNINGS #include int main() { /* Two of 1D arrays*/ ////int arr0[3] = { 1,2,3 }; // 배열의 이름은 첫번째 주소처럼 사용할수있다. ////int arr1[3] = { 4,5,6 }; ////int* parr[2] = { arr0, arr1 }; // an array of pointers // parr 포인터의 배열의 첫번째 원소에 arr0가 들어간다. // 포인터가 담길수있는 메모리 공간을 두개 확보한 배열이 되는것. //for (int j = 0; j < 2; ++j) //{ /..
2020.11.12 -
C언어 - 포인터에 대한 포인터(2중 포인터)의 작동 원리
변수를 선언하면 변수를 통해서 메모리 공간을 사용할수 있다. int *ptr = &a; // 주소값을 ptr변수에 저장한다. *ptr = 8; // ptr변수를 *를 붙여 dereferencing(간접접근, 역참조)한다. 저장된 a의 주소값을 찾아 데이터를 가져옴. 이중 포인터는 포인터변수의 주소를 저장할 수 있다. 포인터 변수 앞에도 주소연산자(&)를 붙이면(&ptr) 포인터 변수의 주소를 가져올수있다. 포인터 변수의 주소값을 가져올때는 이중포인터 변수를 사용한다. (**pptr) 출처 : 홍정모의 따라배우는 C언어
2020.11.12 -
C언어 - 배열 매개변수와 const
#define _CRT_SECURE_NO_WARNINGS #include void print_array(const int arr[], const int n) { for (int i = 0; i < n; ++i) printf("%d ", arr[i]); printf("\n"); } void add_value(int arr[],const int n, const int val) { int i; for (i = 0; i < n; i++) arr[i] += val; // 메모리 주소에 직접 값을 넣어주기때문에 // return값이 없어도 return과 비슷한 기능을 한다. } int sum(const int ar[], const int n) { // 배열값이 변하지 않게 const int i; int total ..
2020.11.12 -
C언어 - const와 배열과 포인터
#define _CRT_SECURE_NO_WARNINGS #include int main() { //type qualifiers : const, volatile,... const double PI = 3.14159; //PI = 2.14159; const int arr[5] = { 1,2,3,4,5 }; // const를 붙이면 배열의 각각의 값을 바꿀수없다. // arr[1] = 123; // const붙이면 Not Working const double arr2[4] = { 1.0,2.0,3.0,4.0 }; //arr2[0] = 100.0; const double* const pd = arr2; // *pd = 3.0;// pd[0] = 3.0; arr2[0] = 3.0; // pd[2] = 1024...
2020.11.12