본문 바로가기

C언어

C언어 포인터 - 문자열을 다룰 때 이중 포인터를 쓰는 이유 1.char * word = "hello" 이렇게되있을때, char * word = 0x12 이런식으로, 문자열의 주소값을 가지고있다고 생각해서 제가 이름값만 바로 넘겨버렸었거든요; 문자열의 주소값을 바탕으로 포인터로 접근하면 된다고생각했는데 안되더라구요 ㅠㅠ. 왜그런건가요 ㅠㅠ.? 왜, 문자열의 주소값이 아니라, 문자열을 가리키고있는 포인터의 주소를 이중포인터로 받아서 접근해야하는건가요?? 2.배열의 경우엔 이름이 주소값이라서 저렇게 넘겨졌구요; 제가 개념이 꼬인거같은데 이부분 조금만 설명해주시면안될까요 ..? c언어에서 문자열을 표현할때, 포인터로 표현할때와 배열의 표현할때 차이점을요 ㅠㅠ. 테스트를 위하여, 문자열 연산을 싱글 포인터로 바꿔봤습니다. #include #include #include .. 더보기
c언어 메모리동적할당 문제 Memory Allocation Malloc 출력값 알아내는게 문제인데요 출력값 첫번째는 30이고 두번째는 a부터 i까지 출력돼야 되는거 아닌가요? 두번째는 쓰레기값도 아니고 뭔 이상한 한자같은게 나오는데 원래 이렇게 나오는게 맞나요? Debug : For 문에 불필요한 세미 콜론이 있어서 오류입니다. ○ 질문하신 코드의 For Loop에 잘못된 세미 콜론이 있습니다. 이 때문에 For 문이 진행이 안되었습니다. 코드 개선 ○ 물론, 예제 코드라서 그랬겠지만, 코드에 잘못된 부분이 많습니다. ○ Malloc() 을 쓸 때는 Sizeof() 와 함께 써야 시스템이 바뀌어도 오류없이 동작합니다. 원래 코드는 위험합니다. ○ Malloc() 후에는 메모리를 리셋해 주는 것이 좋습니다. (이 부분은 생략) ○ 문자열을 다룰 때는 마지막에 Null 문자를 .. 더보기
Const (한정자) 관련 질문입니다. #include using namespace std; class CObj { private: const int m_iValue; const short m_sValue; int m_iTest; public: int* GetTest(void) const //1번 함수 { return &m_iTest; } int* const GetTest2(void) { return &m_iTest; // 2번 함수 } }; int main(void) { return 0; } 1번 함수는 왜 오류가 나는 건가요?? 그리고 nt* const GetTest(void) 이렇게도 되는데 이건 무슨 의미 인가요??? Const 선언의 위치는 알아보기 쉽게 맨 앞으로 해주세요 1. int* GetTest(void) const 이게 별로.. 더보기
두 정수의 최대공약수 구하기 - 디버깅 두 정수의 최대공약수를 구하는 코드입니다.뭐가 문제인지 잘 모르겠습니다.왜 고쳐야 하는지하고 어떻게 고쳐야 하는지 알려주시면 감사하겠습니다. 코드의 세세한 실수가 많네요 ○ Scanf() 함수의 입력 포멧 ("%d%d") 사이에 여백이 있어야 합니다. 이대로는 3, 36, 3 6 을 구분할 수 없습니다. ○ 두 숫자가 같은 것을 확인하는 부분은 (a == b) 입니다. 여기가 (a = b) 로 되니, 이 부분만 지나면 a, b 값이 똑같아 지고, 이후 부분은 건너뛰게 됩니다. ○ 출력 부분에 "%d" 가 없으니, c 를 출력할 수가 없습니다 .Printf() 함수 사용법을 더 명확하게 보세요 ○ 최대공약수를 못찾는 경우에 대한 예외처리 추가해주세요 코드 예제 #include int main() { int.. 더보기
C언어 재귀함수로 삼각형 그리기 - 재귀함수 연습 c언어 재귀함수 연습 원인좀 알려주세요. 재귀함수로 반복문 연습해보는중인데 저가 원하는 출력문은 ***** **** *** ** * 이렇게 나오는것인데 저위에 코드대로 해보면 ***** **** *** ** * ***** 출력문이 이런형태로 나오게되는데 원인좀 알려주세요!. 왜 한번더 돌게 되는지 설명좀 해주세요. 일단 완전 잘못 짰습니다. ○ for_1 함수 중간에 main() 함수를 다시 호출하는 것부터 완전 잘못된 코드입니다. 이것은 재귀함수가 아닙니다. ○ 코드를 고쳐줄까하고 보다가, 너무 모르는 것이 많은 것 같아서, 완전히 다시 짜서 올립니다. 1. 코드가 컴파일되서 돌지도 않습니다. 예를 들어, for_1() 함수의 return을 int 형으로 선언하셨는데, 실제로는 end==0 인 케이스에.. 더보기
사전 순으로 단어 정렬하기 문제 : 사전순으로 단어를 생성하여 N 번째 올 단어를 찾아라 ● 특정 문자열이 주어지고 이 문자열 안에 포함된 단어들을 사전순으로 정렬하라. 그리고 주어진 N 번째 오는 단어가 무엇인지 구하라. 단, 문자열의 최대 길이는 1,000 이고, 모두 소문자 알파벳으로만 되어 있다.중복되는 단어는 한 단어로 생각한다. 시간제한이 있다. (빠를 수록 점수가 높다, 1초가 넘으면 실패) ● 사전순이란 것은 알파벳 a ~ z 까지 단어를 정렬하는 것을 의미한다. ● 예를 들어, melon 이란 문자열이 주어졌을 때, 7번째 오는 단어를 구하라. melon 안에 포함된 단어를 사전순으로 정렬하면 다음과 같다. 1 : e2 : el3 : elo4 : elon5 : l6 : lo7 : lon8 : m9 : me10 : .. 더보기
문제 2. 지뢰 찾기 (Mine sweeper) // Written by rinehart // rinehart@naver.com //2007. 6. 8 /* Note : This code will be better if get map text from file. (I'm lazy...) Maybe, some part of main function need to seperate to another functions */ #include #include #include #define MAP_MAX 100 #define Type_New_map 1 #define Type_Read_map 2 #define Type_Exit 3 int Get_String(char *input_buf, int *m, int *n); int Get_Result(char **map,.. 더보기
씨언어에서 (c++아님) x,y의 좌표가 주어졌을때 각도 구하는 법 x,y의 좌표가 주어졌을때 각도 구하는 코딩 가르쳐주세요!! x, y 좌표를 이용해서 좌표축에 만들어지는 삼각함수를 이용하면 됩니다. 각도를 A 라고 하면, tan(A) = y/x 가 되지요. 반대로, x, y 좌표를 이용해서 각도 A를 구하는 것은 역함수 아크탄젠트를 이용하면 됩니다. 자세한 수학적 이론은 정석의 삼각함수를 찾아보세요. C 언어 라이브러리 중에 math.h 가 있습니다. 삼각함수를 제공합니다. 함수 설명은 http://www.cplusplus.com/reference/clibrary/cmath/atan2.html 여기를 참조하시고요, 예제코드는 아래 있습니다. Example /* atan2 example */ #include #include #define PI 3.14159265 int.. 더보기
[개강공지] Computer Engineering 1st year. Blog just opend and Welcome! 안녕하세요. 컴공과 1학년 블로그 과대표 로엔그린 입니다. 네이버에 본래 블로그를 운영하고 있었으나, 좀더 전문적인 내용으로 바꾸기 위하여 컴퓨터 관련된 내용을 새로운 블로그로 독립하여 운영합니다. 기존 블로그는 본의 아니게 지나치게 정치색(?)을 띠게 되어버렸습니다. 과대표 소개를 간단하게 드리면, 최초로 베이직으로 프로그램을 짠지 한 16년 정도 되었습니다. 컴공과에 입학하여 C언어를 배운지 10년 정도 되었습니다. 그리고, 지금도 프로그램을 만드는 것을 업으로 하고 있습니다. 어떤 개그맨은 "16년 정도 하면 달인이다" 라고 주장합니다만, 아직 짠 프로그램의 수가 5만 6천개가 안되서인지... 아직 달인이라고 부르기는 부끄러울 정도의 수준입니다. 프로가된 지금 돌아보면 항상, "그 때 배울 때 이런.. 더보기