일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 배열
- 알고리즘
- VS ERROR
- Tips프로그래밍강좌
- 연산자
- doit코틀린프로그래밍
- Win32
- c++
- Programming
- 함수
- 포인터
- Desktop
- 이지스퍼블리싱
- Javascript
- Tips강좌
- CS
- 문법
- 리뷰
- 김성엽
- tipssoft
- Visual Studio
- c#
- Kotlin
- 지식나눔강좌
- 백준
- c
- Windows
- 프로그래밍
- 티스토리
- Direct2D
- Yesterday
- Today
- Total
목록배열 (14)
F.R.I.D.A.Y.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1HBIl/btqAXgNGZgX/2OuFFlp7AqAoGezc5GBQOK/img.jpg)
이번 포스트는 제목 그대로 배열 변수의 이름이 어째서 해당 배열의 0번 인덱스의 주소가 되는지 알아봅니다. 간단해요! int arr[10]; &arr[0]; // 처음 배울 때 주로 사용하는 0번 인덱스의 주소를 가져오는 법입니다. &*(arr + 0); // 처음 코드는 위와 같이 변경할 수 있습니다. &*(arr); // 0은 더하든 말던 값의 변화가 없으므로 지울 수 있습니다. (arr); /* 간접 참조 연산자(*)와 주소 연산자(&)는 곱셈과 나눗셈처럼 서로 상반 관계입니다. 따라서 함께 없앨 수 있습니다. */ arr; // 불필요한 괄호를 지워줍니다. // 따라서 // &arr[0] == arr 입니다. 이 내용은 포인터를 배우다보면 알게되는 내용입니다 :) 이 표현법을 알게 되면 대괄호를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ECmTU/btqAQNzIqpO/XKDGHEQEPeQivWNORxnHuk/img.png)
C언어에는 typedef라 불리는 기존 자료형을 다시 정의하는 키워드가 존재합니다. 이 포스트에서는 이 typedef에 대해 알아봅니다. 나도 별명을 가지고 싶다 변수는 다양한 이름으로 선언해서 프로그램의 핵심 중추로 작용합니다. 그때, 자료형들이 시샘이 났습니다. 그래서 데니스 리치[# C언어의 창시자입니다. 자세한 내용은 링크를 참고하세요.]는 불만을 해소해주고자 만든 키워드가 typedef라고 보시면 좋겠습니다. int var1; char var2; double real1; 변수를 선언하는 방법입니다. typedef 또한 마찬가지로 작성할 수 있습니다. typedef int integer; 이렇게 작성하면 int의 별명으로서 integer라는 자료형이 새롭게 구현[# 물론 기반은 int이지만]됩니다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dOsSYO/btqv7Coz1k5/MPv2UGQj83sksBBaa2enk0/img.png)
이전 sizeof 연산자에 대한 포스트는 이 포스트를 위한 선행 단계라고 봐도 무방하겠네요. 이번엔 sizeof 연산자를 사용해선 안 되는 부분을 다뤄봅니다. ※ 이 포스트는 Visual Studio 2019 Community v16.1.2. 에서 테스트되었습니다. 메모리 크기는 반환하지 않습니다 우리가 이전에, malloc() 함수 등을 사용하는 동적 할당이라는 방법을 배우기 전엔 배열을 사용했습니다. 이렇게 컴파일 전에도 크기를 알 수 있는 배열을 정적 배열(static array)라고 부르는데, 이 정적 배열을 이용하면서 사용했던 방법은 동적 배열에선 이용할 수 없습니다. 다음 코드를 보겠습니다. #include #include int main(void) { int* arr = (int*)mallo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dO2dPJ/btq3bVaOz0V/99j6FqvSkqmfN42VIR9D4K/img.png)
char str1[] = "abcdefg"; char *str2 = "abcdefg"; 가끔씩, 배열과 포인터를 혼동하는 사람들이 있어서. 배열 str1은 문자열 "abcdefg"에서 각각의 문자를 수정할 수 있다. 그러나 포인터 str2 는 각각의 문자를 수정할 수 없다. 사실, 굉장히 간단한건데 기본적인 프로그램의 구조를 몰라서 생기는 문제라고 생각한다. 배열에서도, 포인터에서도 쌍따옴표로 묶은 문자열로 값을 초기화 할 수 있다. 그런데, 배열은 정확히 하면 초기화를 편하게 할 수 있도록 추가 문법을 제공한 것으로 볼 수 있다. 따라서 char str1[] = { 'a','b','c','d','e','f','g','\0' }; 일일이 대입이 되기 때문에 변경이 가능하다. 그러나 포인터에 값을 대입하는..