c언어7

C언어 배열과 포인터 같다? 다르다? 포인터 때문에 C언어가 어렵다는 분이 참 많습니다. 기계어나 어셈블리어부터 하신 분이라면 쉽게 이해하지만, 머릿속에 메모리를 그려 놓고 생각하는 것이 프로그래밍 입문자로써는 힘들 수 있습니다. 어차피 변수인데 이름에 따라 적당한 값을 넣고 뺀다고 생각하면 되는 것을 포인터라는 것은 이해했다고 싶어도 막상 프로그래밍을 하다 보면 헷갈립니다.포인터를 정확히 이해하기 위해서는 배열과 어떤 차이가 있는지 알아야 합니다. C언어에서 배열과 포인터가 어떻게 다른지 자세히 알아보겠습니다.C언어 배열과 포인터가 같을까?C언어 코딩의 혼란스러움더욱이 C언어의 친절함이라고 할까요? 배려 때문인지 모르지만, 배열과 함께 코딩하다 보면 더욱 헷갈립니다. 어? 코딩하는 방법이 배열이나 포인터나 똑같네. 그럼 왜 어렵게 포인터를.. 2022. 12. 7.
C언어 날짜 시간 문자열 분리 팁 C언어 날짜 시간 문자열 분리 팁C언어는 문자열 처리하기가 참 까다롭습니다. 문자열을 합치는 간단한 일도 메모리를 따로 생성해서 복사해야 하는데, 다른 언어에 비하면 귀찮은 작업입니다. 문자열 합치기도 이러한데, 특정 문자열에서 일부를 분리해서 새로운 문자열을 만드는 것은 더욱 귀찮아집니다.통신으로 날짜와 시간이 섞인 문자열을 받았습니다. 그 문자열에서 날짜와 시간을 분리해서 화면에 출력하려고 합니다. 예를 들어서 "badayak.com20220920150525jwmx.tistory.com" 이런 데이터를 받으면 "데이터 날짜: 2022년 09월 20일 15시 05분 25초"로 화면에 출력하고 싶습니다. 그래서 아래와 같이 코드를 작성했습니다.C언어 memcpy() 함수 사용#include <std.. 2022. 9. 21.
C언어 함수 내 배열은 어디에 생성될까? C언어의 배열 생성 위치에 대한 오해C언어에 대해 어느 정도 자신이 생겼는데도 확실히 알지 못한 것이 있었습니다. 함수 내부에 생성되는 배열 변수는 어디에 생성될까에 대한 호기심입니다. char, short, int 변수는 그 크기가 작아서 스택에 생성되는 것에 대해서 의심하지 않았지만, 배열은 매우 클 수 있는데, 이 배열도 과연 스택에 생성될까 하는 것이죠. 이 문제에 대해 시원하게 설명해 주는 책이 없었고 인터넷이 없던 시절이라서 주위에 C언어라면 방귀 좀 뀐다는 프로그래머에게 물어보면 사람마다 의견이 다르고 서로 언쟁을 올리기도 했습니다.지금이야 메모리가 8GB·16GB로 매우 크지만, 당시에는 2MB, 돈 좀 쓰면 4MB라서 프로그래머는 메모리 운영에 매우 조심해야 했습니다. 잘 실행되는 프로그.. 2019. 11. 19.
C언어 프로그래밍 과제를 위한 MinGW 설치 방법 C언어 프로그래밍 과제를 위한 MinGW 설치 방법지인이 C언어 프로그래밍 과제를 받았나 본데 마이크로소프트사의 비주얼 스튜디오 2017을 사용한다고 하네요. 작성한 프로그램을 보니 윈도우 프로그램은 당연히(?) 아니고 텍스트 환경에서 실행하는 예제 수준 정도여서, 그렇다면 비주얼 스튜디오보다는 MINGW가 좋다고 권했습니다. C언어 학습 정도라면 비쥬얼 스튜디오는 너무 크지요. 소 잡는 칼로 닭 잡는 각입니다. 요즘은 "~할 각"이라는 말을 많이 사용하네요.여하튼, MinGW는 비주얼 스튜디오처럼 화려하지는 못해도 매우 단순해서, 처음 설치 과정이 조금 복잡해서 그렇지 텍스트 에디터와 명령창만 이용하기 때문에 비주얼 스튜디오의 복잡한 기능을 학습할 필요가 없습니다.메모장을 이용해도 되고 자주 사용하는 .. 2018. 6. 12.
C언어 공용체 union 예제 설명 C언어 union 유니온 공용체 예제 설명포인터 때문에 C언어 배우기가 어렵다는 말씀을 자주 듣는데요, 생각 외로 공용체 union를 이해하지 못하는 분이 많네요. 이해한다고 해도 어디에 활용할지 몰라서 사용하지 않는 경우도 많은데요, struct만큼이나 매우 유용합니다. union의 쓰임새를 깨닫고 코드에 적용하다 보면 왜 C언어가 어셈블러에 가깝다는 얘기가 나오는지 이해가 될 것입니다.C언어의 변수 타입은 문자·숫자·문자열로 특성에 맞추어 선언한다기보다는 변수의 크기를 정하는 쪽에 가깝습니다. 아울러 이렇게 생각하는 것이 C언어 코딩에 도움이 큽니다. 예를 들어 int는 정수 변수이기도 하지만, 4바이트의 변수로, char는 문자보다는 1바이트 크기의 변수로 생각한다면 C언어에서 변수 다루기가 편해지.. 2018. 4. 19.
deprecated conversion from string constant to 'char*' 컴파일 경고 제거 방법 deprecated conversion from string constant to 'char*' 컴파일 경고 제거 방법컴파일 에러보다 무서운 것이 경고(warning)라고 생각합니다. 그래서 꼭 경고 메시지를 제거하는데, 이상 없던 코드에 경고문이 뜨네요. deprecated conversion from string constant to 'char*'.코드를 여러 번 보아도 도대체 뭐가 이상하다는지 이해를 못 하겠습니다. 그러나 이유를 알고 보니 지금껏 컴파일 경고는 없었지만, 조심해 왔던 내용이었습니다. 바로 상수 문자열을 포인터 변수로 사용하는 문제입니다. 아래의 코드를 보면 이상이 없어 보이지만, 위험을 가지고 있는 코드입니다.int main( void){ char *str= "jwmx.. 2016. 8. 22.
C/C++ 언어 표준 코딩 정하기 아래의 글은 제가 운영하는 임베디드 리눅스 포럼인 FALINUX 포럼에 올린 글입니다. 저 혼자 작성하는 프로그램이라면 마음 편히 작성하면 되겠습니다만, 포럼에 자료를 올릴 때에는 작은 샘플 프로그램이라도 규칙을 가지고 작성해서 올리고 싶어서 C 언어 표준 코딩을 정리하게 되었습니다.FALINUX 포럼에 올린 글을 여기에 올리는 이유는, 포럼보다 jwmx 블로그에 손님이 많아, 더 많은 분의 관심과 말씀을 기대하고 싶어서 입니다. 처음 글이라 빠진 부분도 많아서 앞으로 방법을 계속 추가하려 합니다만 잘 될지 모르겠습니다. ^^표준 코딩 규칙의 필요성gxLib와 관련하여 최근 글인 "PNG 이미지 출력을 위한 분석 1"을 올렸습니다만, 첨부된 gxLib 0.5.6 버전을 보시고 황당해 하실지 모르겠습니다... 2008. 11. 12.