전체 글(139)
-
C언어 - 복합리터럴과 배열 ( Compound Literals )
#define _CRT_SECURE_NO_WARNINGS #include #define ROWS 3 #define COLS 4 int sum_1d(int arr[], int n); int sum_2d(int arr[][COLS], int rows); int main() { int a = 1; // 1리터럴의 값을 a에 넣는것 3; // Literal 은 기호 없는 상수. 3.14f; int b[2] = { 3,4 }; // 3,4두개의 숫자가 brace로 묶여있고 // b라는 심볼로 인식할수있는 2개짜리 배열에 들어간것. (int[2]) {3, 4};// 기호가 없다, compound literal //int c[2] = (int[2]){3,4}; // Error int arr1[2] = { 1,2 };..
2020.11.12 -
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