코딩/C언어

c언어 해설

tree0505 2025. 7. 1. 10:18
반응형
  • c언어는 2차원 배열이라도 한줄에 들어 있다. 
  • [1] [1] = 100 (넣어라) 
  • [4] = 200 
    • 둘다 같은 자리에 숫자를 넣는거다. 
  • 이름이 2개씩 있는거다. 
  • new int [3] [3] 
    • 일자로 9개가 생기는거다. 


  • 해설요청게시판 
  • c언어 해설 
#include<stdio.h>
#include<stdlib.h>
#define N 3

int main(void){

	int (*in)[N], *out, sum = 0;
    //int (*in) [3] =>배열이 있다. 
        //2차원 배열 
        //int[3][] arr; 같다. 
    //int *out; 
        //이런 배열이 있다. //1차원 배열 
        // == int[] arr; 같다. // * == [] 대괄호와 같다. 
    //int sum = 0; //이런 배열이 있다.
        //총 3개의 배열이 있는 거다. 

	in =(int(*)[N])malloc(N*N*sizeof(int));
    //malloc => new 이다. 
    //int[] arr = new int[4]; //16바이트이다. 
        //int => 4바이트 * 4 니까. 16바이트 
    
    //c언어는 new가 멀록 malloc 이다. 
        //malloc(4); => 4바이트  
        //malloc(16); => 16바이트 == int[] arr = new int[4];
    
    //int * p = (int*)malloc(16); // == int[] arr = new int[4]; 

    //(N*N*sizeof(int)) => 3 * 3 * 4 = 36 
    //결론
        //in = malloc(35); 같다. // int[][]arr = new int[3][3]; 
    //----------------------------------------
	out = (int*)in;
    //out과 in이 서로 같은 주소를 가지고 있다.
        //int [][] arr = new int[3][3]; 
        //int[][] temp = arr; //이렇게 한거다. 
	
	for(int i =0; i<N*N; i++) out[i]=i;
    // 9바퀴 돌면서 
    // 이렇게 넣어도. 9칸에 0 1 2 | 3 4 5 | 6 7 8 이 들어간다. 
        //2차원 배열이라도. 한줄로 되어 있기 때문 

    //c언어는 2차원 배열이라도. 한줄에 들어있다. 
    //---------------------------------
	for(int i=0; i<N; i++) sum+= in[i][i];
    // 00 11 22 
    // 0 + 4 + 8 = 12 

	printf("%d",sum); //정답 12 
	
	return 0;
}
반응형