dev/C27 [C] 배열, 2차원 배열, 배열 포인터 1차원 배열 위와 같이 배열 주소를 가리키는 변수와배열 포인터가 있을 때 이렇게 2개의 변수가 생성이 되고 포인터 변수는 배열의 첫번째 요소의 주소값을 가리키게 된다. arr+1과 arr2+1의 결과는 모두 바로 다음요소의 주소를 가리키게 된다. 2차원 배열일때 2차원 배열과 포인터 변수가 있을때 이렇게 2개의 변수가 생성이 되고 포인터 변수는 2차원 배열 0번인덱스의 1차원 배열의첫번째 요소의 주소를 가리키게된다. arr+1은 다음 3개의 int형 요소를 가진 1차원 배열의첫번째 요소의 주소를 가리키게 되지만,arr2+1은 arr[0][0]의 주소를 가리키게 된다.---> pointer변수가 int형 요소를 가지는 1차원 배열 타입이기 때문이다. 2차원 배열타입 포인터 변수위와.. 2024. 7. 28. [C] pointer 변수 size 각각의 포인터 변수의 크기는? 8로 동일하다 2024. 7. 16. [C] 문자 배열 선언하기 5개의 문자로 이루어진 문자열 배열이 있을때 사이즈는 5인가? 문자열의 마지막에 numm문자가 있기 때문에 6의 길이를 갖게 된다. 2024. 7. 16. [C] 변수 메모리 할당 13 번째 줄에서 포인터 변수의 주소값을 출력하는코드를 작성해 놓았다. *pb에 temp의 값을 할당하기전이므로 *pb에는 20이 담겨있다. 2,4,5 번째에 모두 같은 값이 들어있는데도메모리의 주소값이 다르다. 특히 2번째는 포인터 변수 pb의 값을 역참조 한뒤의해당 값의 주소값을 출력하면 &pb의 주소값과 다른 값이 나온다. 2024. 7. 3. [C] struct 변수선언과 메모리 할당 위와 같이 변수가 선언되어 있을때 struct의 크기는 자료형이 가장 큰 int 형의 크기인 4byte를 기준으로4*7=28즉, 28이 될것만 같다. 하지만 크기는 16이된다. 잘 보면 char a의 주소는 "0"으로 다음 int b의 주소인 "4"까지 패딩이 포함된 크기를 가지고 있다. int b이후의 연속된 char c,d,e,f는 주소가 1byte씩 늘어나는 것을 확인할수 있다. 후기아마도 선언된 struct에 메모리를 할당해줄때 가장 큰 자료형을 가진 변수를 기준으로 메모리를 할당해, 자료형의 크기가 작은 변수에 패딩을 추가해 주지만,연속된 변수들의 자료형의 크기가 struct에 선언된 가장 큰 자료형의 크기보다 작고 연속된 변수의 합이 가장 큰 자료형의 크기와 같을때 패딩을 추가해 .. 2024. 7. 3. [C] struct 변수 선언 순서에 따른 크기 변화 위와 같은 struct가 있을때 struct의 크기는 8이 될것이다. char, char, int 순서로변수가 선언되어 있을때도 struct의 크기는 8이다. 그런데 char, int, char 순서로struct가 선언되어 있으면은 struct의 크기는 12가 된다. 후기오늘과 같은 개념을 숙지하고 있기 위해서는많은 관심이 필요할거 같다. 느낀점it에 더욱더 많은 관심을 가지게된 지금은 RAM이라는 존재가 그저 용량, 클럭같은 것에 국한되는 것이 아닌,어떤 프로그램이다, 앱을구동할때 신경써야하는중요한 요소 중 하나라는 것을 느끼게 된다. 프로그램이나, 앱을 구동하기 위해서는 RAM이 필요하게 되고 램의 용량은 한정되어 있다.C를 공부하면서 JAVA와는 다르게 메모리에 대해서 더 많이 .. 2024. 7. 3. [C] sturct 참조변수 & struct pointer 변수 sturct타입의 참조변수 p,struct 타입의 포인터 변수 p2 가 있을때 p.name = "test";이런식으로 sturuct name 변수에 값을 할당하는것은 가능하지만,p2.name = "text";이런식으로 값을 할당하는 것은 불가능하다. 그 이유는 struct 타입의 참조변수 p는 stack에 메모리가 할당이 되지만,struct 타입의 포인터 변수 p2는 heap에 생성된struct의 메모리 주소를 가리키고 있기때문에"->" 화살표를 사용해서 Heap에 있는 struct 안의 메모리에값을 할당해 주어야 한다. 2024. 6. 10. [C] 소스파일을 바이너리 파일로 컴파일 하기 위와 같은 내용의 소스파일이 있다. 파일의 이름은 gcc_test.c 위의 명령어를 실행해서 바이너리 파일을 생성 바이너리 파일이 생성 되었다. 바이너리 파일이 정상적으로 실행된다. 2024. 6. 6. [C] 포인터 변수로 포인터 변수 가리키기 (pointer to pointer) 이러한 포인터 변수들이 있을때*ptr은 변수의 주소를 담을수 있는 포인터 변수이다. **dPtr은 *ptr포인터 변수의 주소를 담을수 있는 더블? 포인터 변수이다. ***tPtr은 **dPtr와 같은 더블 포인터 변수를 담을수있는트리플? 포인터 변수이다. 프로그램을 실행하면 위와 같이 변수및 포인터 변수들이 생성되게 된다. 프로그램 실행 결과를 보면은 포인터 변수가포인터 변수를 가리키고 있는것을확인할수 있다. 포인터 변수에서 메모리 주소를 역참조 해서결과를 보면은 모두 num의 메모리 주소를 역참조 해서값을 출력하는 것을 확인할수 있다. ps. "*" 가 하나인 포인터 변수처럼 포인터 변수가 가리키는 메모리의 값을 수정할수도 있다. 2024. 6. 4. 이전 1 2 3 다음