Skip to content

기글하드웨어기글하드웨어

인터넷 / 소프트웨어 : 윈도우즈, 리눅스, 기타 운영체제, 각종 어플리케이션, 프로그램, 소프트웨어, 인터넷, 인터넷 서비스에 대한 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

일반
2016.08.16 11:12

뜬금없이 만져보는 C언어.

profile
조회 수 960 댓글 30
Extra Form

모 님이 주기적으로 자게에 올리는 프로그래밍 근황 글을 보고 C언어에 관심이 쵸큼 생겨, 더듬거려가며 간단히 C언어를 조금 만져보고 있습니다. 하라는 VBA는 안 하고!!
 

근데 제가 컴맹이다 보니까, 처음부터 막히는 데가 생기는군요.
 

#include <stdio.h>

unsigned int exponential (int a, int b)
{
    int i;
    int result = a;
    
    for (i = 1; i < b; i++)
    {
        result *= a;
    };
    
    return result;
};

int main (int argc, char **argv)
{
    //int a = (int)argv[1];
    //int b = (int)argv[2];
    
    int a = 2;
    int b = 3;
    int c = exponential(a, b);
    printf("%d\n", c);
    
    return 0;
};

간단하게 명령행에서 인자로 숫자 2개를 받아 a^b를 계산하여 출력하는 프로그램을 짜려고 했는데, 인자를 받아들이는 곳에서 막혀 버렸습니다. 이거 해결하려면 그 포인터인가 뭐시긴가부터 먼저 좀 알아야 할 것 같은데, 맞나 모르겠네요. 중괄호나 문장 끝에 붙이는 ; 이것도 익숙하지 않고, 프로그램의 진입점인 main() 함수가 맨 아래인 것도 그렇고, 좀 헷갈리네요. 좋은 독학용 책이라도 추천받아야 할까봐요.
 

하여튼, 이런 거 만져보다 보니 파이썬이 얼마나 편한 언어였는지 새삼 깨닫게 되네요. 근데 난 지금 VBA를 만져야 하는데, 대체 뭐하는 건지…
 

추가 :
여러분들의 도움을 받아 다음과 같이 의도한 대로 동작하는 코드를 작성할 수 있었습니다. 감사합니다.
 

#include <stdio.h>
#include <stdlib.h>

unsigned int exponential (int a, int b);

int main (int argc, char **argv)
{
    if (argc != 2+1)
    {
        printf("Please enter 2 arguments together.\n");
        exit(1);
    };
    
    int a = atoi(argv[1]);
    int b = atoi(argv[2]);
    
    int c = exponential(a, b);
    printf("%d\n", c);
    
    return 0;
};

unsigned int exponential (int a, int b)
{
    int i;
    int result = a;
    
    for (i = 1; i < b; i++)
    {
        result *= a;
    };
    
    return result;
};


  • profile
    라임베어      성공한 사람은 포장되어 일반인을 망친다. 2016.08.16 11:29
    unsigned int expotential(int a, int b)
    {
    if( b == 0) return 1;
    return a*expotential(a, b-1)
    }

    제곱은 재귀함수 처리 하면 편합니다..
  • profile
    쮸쀼쮸쀼 2016.08.16 11:30
    이건 그냥 제어문 구조에 익숙해지려고 써본 거라서요. 이런 경우는 재귀가 확실히 편하고 깔끔하기는 하죠.
  • ?
    Φloteer      🤔 2016.08.16 14:18
    근데 재귀는 편할 수는 있어도 (혹은 목적에 따라서는 보기 깔끔할 수는 있어도) 이론적으로 좋은 기술은 아니지요. 컴파일러가 최적화해줄 수 있는 부분은 최적화해주기는 하지만...
  • profile
    쮸쀼쮸쀼 2016.08.16 14:22
    일찍이 귀도 반 로썸 선생님께서도 “Is it really such a big deal to rewrite your function to use a loop?”라고 말씀하셨다고 하죠.
    http://gigglehd.com/zbxe/14093956#comment_14094213
  • ?
    Minny      Main System : Microsoft Surface Go (Model 1824) Intel® Pentium® Proces... 2016.08.16 11:41
    위에 함수 쓸거 선언 해 두고 난 다음에 밑에 함수를 만들게 되면, 매인을 위에 올릴 수 있죠...

    그리고 딱히 코드에 문제는 없는데.... 요. 매개변수 받는거랑 리턴하는것도 그냥 잘 되어 있고...
  • profile
    쮸쀼쮸쀼 2016.08.16 11:44
    main 함수 안의 주석처리해둔 부분이 문제가 되는 부분입니다. 저는 이게 인자들의 내용을 배열에다가 넣어둔 것이라 생각하고 배열의 요소 2개를 가져와 변수에다가 넣으려 한 것인데, 저 부분을 그대로 쓰면 뭔가 경고와 함께 이상한 결과값이 나오더군요. 그래서 일단 문제가 되는 부분을 주석처리한 뒤, 하드코딩으로 계산할 값을 넣어둔 게 위 코드입니다.

    그나저나 C언어에서는 함수도 변수처럼 미리 선언을 해야 하나 보군요. 메모메모.
  • profile
    설아      ShellCat ː 雪雅 - 1st shell 2016.08.16 12:14
    저거 대로 받아오면 argv에 들어가 있는 값이 문자 1에 해당하는 아스키 값이..들어가 있을텐데...
    아닌가?...
  • profile
    쮸쀼쮸쀼 2016.08.16 12:53
    저도 그리 예상했는데, 어째 잘 안 되네요.
  • profile
    순딩sheep      회사에서 살아남기 2016.08.16 18:32
    처음에 하셨던 것 처럼 함수를 아예 만들어두셔도 됩니다만,
    그냥 함수 선언만 해두고 나중에 해당 함수를 만들어두면 깔끔하고 보기도 좋으니까요.
    미리 다른 함수들이 있으면 main문 찾으려고 스크롤 엄청 해야하니, main문 바로 나오게 하는거죠.
  • profile
    쮸쀼쮸쀼 2016.08.16 18:42
    그냥 헤더 파일로 빼버리는 것이 깔끔하겠네요.
  • ?
    Minny      Main System : Microsoft Surface Go (Model 1824) Intel® Pentium® Proces... 2016.08.16 20:21
    아하,,, 주석 해 둔 부분 자체를 그냥 생략하고 넘어가버렸네요...

    머리속에 컴파일러... ;;;
  • profile
    쮸쀼쮸쀼 2016.08.16 22:28
    히익 이분 최소 인공지능;
  • ?
    Φloteer      🤔 2016.08.16 12:03
    히익 어려운 언어 하신다..
  • profile
    쮸쀼쮸쀼 2016.08.16 12:03
    뉴비는 늅늅하고 웁니다. C언어 가르쳐주세요!!
  • ?
    Φloteer      🤔 2016.08.16 12:51
    #include <stdio.h>
    #include <stdlib.h>

    unsigned int expotential(int a, int b);

    int main(int argc, char **argv)
    {
    int a = atoi(argv[1]);
    int b = atoi(argv[2]);

    //int a = 2;
    //int b = 3;
    int c = expotential(a, b);
    printf("%d\n", c);

    return 0;
    }

    unsigned int expotential(int a, int b)
    {
    int i;
    int result = a;

    for (i = 1; i < b; i++)
    {
    result *= a;
    }

    return result;
    }

    대충 이런 느낌을 원하셨던 거려나요? atoi말고 더 안전한 함수도 있는데 (콘솔 입력인 경우 그런 걸 쓰는 게 맞을텐데) 일단 기본적으로는..
  • profile
    쮸쀼쮸쀼 2016.08.16 12:55
    atoi라, 처음 보네요. 다른 함수는 어떤 것이 있나요?
  • ?
    Φloteer      🤔 2016.08.16 12:58
    ascii를 integer로 바꾼다고 해서 atoi입니다. string->int라면 여기 좀 더 자세한 답이 있습니다.
    http://stackoverflow.com/questions/27260304/equivalent-of-atoi-for-unsigned-integers
  • profile
    쮸쀼쮸쀼 2016.08.16 13:17
    컴파일해보니까 런타임에 Segmentation fault 오류가 뜨는군요…라고 썼다가 다시 보니 인자를 안 넣었네요. 인자를 넣으니까 작동되긴 합니다. 감사합니다.
  • ?
    analogic 2016.08.16 12:25
    고전중의 고전인 터보C 정복 책을 읽어보시면 설명이 자세히 나옵니다.
  • profile
    쮸쀼쮸쀼 2016.08.16 12:48
    어디서 구할 수 있나요?
  • ?
    amor&spero 2016.08.16 13:05
    (몇주만에 써보는 댓글이 C라니...흑흑)
    main함수가 받아들이는 argv가 char**, 즉 char의 포인터의 포인터(...)라서
    다르게 보면 C에서 보통 string을 char*로 갖고 있기도 하니 결국 string의 배열로 볼 수 있습니다.
    그래서 아마 제생각에는 argv[1]을 가지고 strtol같은 함수를 써보심이 어떤지..
  • profile
    쮸쀼쮸쀼 2016.08.16 13:23
    아직 포인터가 뭔지 잘 몰라서…
  • ?
    amor&spero 2016.08.16 13:36
    핰 ㅠㅠ C에서 포인터는 약간 마의 장벽같은 느낌이죠... 그거 이해하고 쓰는데 몇개월은 걸린것같은..
  • ?
    Φloteer      🤔 2016.08.16 14:48
    참고로 말하자면 효율적으로 짜인 정수 제곱 함수는 이런 느낌입니다.
    http://stackoverflow.com/a/101613
    물론 이렇게 안해도 32비트급 변수에 들어가는 수준의 결과를 한두번 계산하는 수준이라면 엔간히 느린 구현도 괜찮습니다만.. 속도가 필요한 경우에는요.
  • profile
    쮸쀼쮸쀼 2016.08.16 15:00
    이거 비트연산 맞죠? 근데 봐도 모르겠네요;
  • ?
    Φloteer      🤔 2016.08.16 15:04
    저 알고리즘 밑에 나와있는 설명( http://stackoverflow.com/a/108959 , https://en.wikipedia.org/wiki/Exponentiation#Efficient_computation_with_integer_exponents )과 같은 원리입니다. 그저 그걸 좀 더 최적화하기 위해 비트연산도 쓴 듯 합니다.
    외에도 다른 댓글에는 아예 룩업테이블을 도입한 구현도 있고 그러네요. 당연하지만 엄청 자주 연산해야 하거나 하는 경우가 아니면 32~64비트는 꼭 이렇게 안해도 크게 체감차이가 나지는 않습니다. 걍 필요하면 이렇게 하기도 한다 정도..
  • profile
    쮸쀼쮸쀼 2016.08.16 15:10
    흐에에에… 역시 머리 좋은 사람들은 다르네요. 봐도 뭐가 뭔지 하나도 모르겠어요.
  • ?
    Φloteer      🤔 2016.08.16 15:11
    그래서 저는 직접 뭘 최적화하는 건 엔간해선 포기하고 다른사람 걸 가능한한 끌어다 쓰는걸로 방침을 (..)
  • ?
    퀘윈 2016.08.19 06:59
    3을 7번 곱한다 -> 3을 111(2진수)번 곱한다
    3^7 = (3^1) * (3^2) * (3^4) 이런 식으로 작동되는 거에요.
  • profile
    쮸쀼쮸쀼 2016.08.19 10:12
    아하… 역시 주석이란 중요하군요!

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. No Image

    넷기어 펌웨어 지원이 종료된 Netgear 공유기 목록 2021 11월 업뎃합니다.

    지난번에 넷기어 펌웨어 지원 만료 목록을 올렸는데... 2주 사이 대량 업데이트가 되었습니다. 특히 신규목록과 v2 버전 종료가 많이 늘었습니다. ( 그리고 제 구형 공유기도 펌웨어 지원서 사망... 흑흑 )   * 2021년 11월 말 기준으로 ...
    Date2021.11.26 소식 By가로수 Reply6 Views671
    Read More
  2. 디스코드, 바이러스라고 거짓말치는 이미지가 떠돌다

    현재 디스코드에서 DM을 보내서 이런 걸 퍼트리는 사람들이 있다고 합니다.   네, 거짓음성이죠... 여튼, 시끄러울수 있을수 있어서 가져와봅니다.   (디스코드는 %appdata%\discord\Cache 에 DM 이미지를 캐싱합니다)   일단 백신의 원...
    Date2021.11.25 소식 Bytitle: 폭8책읽는달팽 Reply0 Views766 file
    Read More
  3. VMWare 블랙 프라이데이 할인

    VMWare가 2021년 블랙 프라이데이 할인을 시작하였습니다.   대상 제품은 Fusion, Workstation, VSphere 입니다.   Fusion 및 Workstation은 라이센스와 서포트를 같이 구매할 경우 최대 40% 할인, 라이센스 단독 구매시 최대 30% 할인을 ...
    Date2021.11.25 소식 By레이지버드 Reply1 Views1056 file
    Read More
  4. No Image

    인도, 가상화폐 거래 규제 예정

    인도는 아직까지 가상화폐 관련 법률이 없으나, 인도 중앙 은행에서는 투자를 자제하길 권고한 바 있습니다. 이번에 열리는 인도 의회에서는 가상화폐 관련 규제를 도입하며, 정부 차원의 디지털 화폐에 대한 언급도 있을 거라고 합니다.
    Date2021.11.25 소식 By낄낄 Reply0 Views527
    Read More
  5. 블렌더의 새 렌더러, GPU 렌더링 성능 향상

    블렌더의 최신 버전에 탑재된 Cycles-X 렌더러가 기존보다 3~5배 더 빠른 성능을 제공합니다. NVIDIA RTX A6000 기준으로 3~5배 정도 차이나네요. 이 렌더러는 AMD GPU에서도 쓸 수 있습니다. NVIDIA는 쿠다와 OptiX를 모두 지원하고 AMD...
    Date2021.11.25 소식 By낄낄 Reply3 Views887 file
    Read More
  6. No Image

    버츄얼박스같은 가상머신으로 옛날게임 구동하면 안전할까요?

    안녕하세요. 갑자기 궁금해서 이렇게 글을쓰네요. 요즘 옛날게임들 쯔꾸르게임들이 하고 싶어서 찾아보고있는데 이걸 그냥 제컴퓨터에서 켜기가 보안도 그렇고 어떻게될지도 모르니깐 버츄얼박스같은 가상머신을 이용할까 싶은데요... 이...
    Date2021.11.24 질문 Bytitle: AMD파란진주 Reply10 Views2267
    Read More
  7. No Image

    전국 아파트 CCTV 월패드가 털렸습니다

    해커가 이용한 방식은 카메라가 설치된 월패드를 해킹해 몰래 영상을 촬영하고, 이를 다크웹에서 판매하는 식입니다. 앞서 10월에도 동일한 사이트에 한국 아파트 내 월패드로 촬영한 듯한 해킹 영상이 게재됐습니다. 한국은 해외와 달리 ...
    Date2021.11.24 소식 Bytitle: 폭8애옹 Reply21 Views1527
    Read More
  8. [보도자료] 알뜰폰 1000만 가입자 달성 기념행사 개최

    원문은 링크 달아두었습니다. 전 요약만 합니다.   서울 종로에는 MVNO 오프라인 매장 역할을 하는 알뜰폰 스퀘어가 있습니다. 이곳에서 금일 기념행사를 열고, 장관이 MVNO 대표 등과 함께 간담회를 진행하였다고 합니다. 1. 한국알뜰폰...
    Date2021.11.24 소식 Bytitle: 컴맹임시닉네임 Reply4 Views532 file
    Read More
  9. No Image

    이탈리아, 애플과 아마존에 거액의 벌금 부과

    이탈리아 반독점 부서인 Autorità Garante della Concorrenza e del Mercato는 아마존과 애플을 상대로 한 소송 결과를 발표했습니다. 비츠 브랜드의 이어폰을 이탈리아 아마존에서는 애플을 통해서만 판매하거나, 애플에게서 위임...
    Date2021.11.24 소식 By낄낄 Reply1 Views387
    Read More
  10. No Image

    멀웨어가 포함된 앱이 구글 플레이 스토어를 통해 설치됨

    구글 플레이 스토어를 통해 배포된 앱에 조커 멀웨어가 포함됐다고 합니다. 이 멀웨어는 사용자 허가를 받지 않고 연락처와 문자에 접근한다고 알려져 있습니다. 아래는 이 멀웨어가 포함된 앱과 설치 횟수입니다. 그렇게 유명한 앱은 없...
    Date2021.11.24 소식 By낄낄 Reply4 Views857
    Read More
  11. NVIDIA, 글자에서 이미지를 만드는 AI 공개

    NVIDIA GauGAN2입니다. 글자를 입력하면 거기에 맞는 이미지를 만들어 줍니다. '바다'라고 썼다가 '파도치는 바다' 같은 식으로 바꾸면 바로 그림이 바뀌는 게 인상적이네요.
    Date2021.11.24 소식 By낄낄 Reply9 Views3149 file
    Read More
  12. 윈도우 정품인증 너무 짜증나는군요

        어제오늘 총 6대의 ATM 설치했습니다만. 네 정품인증은 전부 전화인증입니다   OS를 어찌 튜닝하셧길레  인터넷을 통한 인증은 다 틀어 막으셨더라고요…. (이게 맞지만요)   키패드로 63자리의 설치 ID 넣어주고 48자리의 확인 ID 넣...
    Date2021.11.23 일반 Bytitle: 명사수포인 Reply9 Views2990 file
    Read More
  13. No Image

    지하철 기지국 설치분을 28GHz 의무수량으로 인정해 달라는 이통사

    이통사에서 주파수 할당을 피할 수 있는 기지국 설치 최소 수량인 1500개를 지하철에 설치할 계획인 1500개의 기지국으로도 인정해 달라고 요청 했습니다   현재 이통사는 올해까지 각 통신사별 15000개의 기지국을 '의무적으로' 설치를 ...
    Date2021.11.23 소식 By공탱이 Reply9 Views760
    Read More
  14. No Image

    고대디 워드프레스 호스팅 서비스 취약점을 악용한 유출

    해외 호스팅 업체인 고대디에서 운영하는 워드프레스 호스팅 서비스 취약점을 악용해 개인 정보가 유출됐습니다. 120만명에 달하는 고객의 이메일 주소와 전화번호, 일부 사용자의 인증서 개인 키, FTP와 DB ID와 비밀번호, 워드프레스 설...
    Date2021.11.23 소식 By낄낄 Reply0 Views388
    Read More
  15. No Image

    아발란처, 가상화폐 시가총액 10위

    아발란처(AVX) 가상화폐가 토큰당 144.96달러까지 오르며 시가 총액 315억 달러가 됐습니다. 현재 가상화폐 중에서 10번째로 가치있는 코인이 됐네요. 지난달에 비해 2배, 1년 전과 비교하면 3000% 이상 뛰었습니다. 레이어 1 블럭체인을 ...
    Date2021.11.23 소식 By낄낄 Reply0 Views513
    Read More
목록
Board Pagination Prev 1 ... 210 211 212 213 214 215 216 217 218 219 ... 578 Next
/ 578

최근 코멘트 30개
Colorful
13:25
딱풀
13:24
KTHDevKR
13:23
소고기죽
13:23
아이들링
13:23
소고기죽
13:23
딱풀
13:20
딱풀
13:17
딱풀
13:15
유지니1203
13:15
Colorful
13:14
증강가상
13:13
마초코
13:11
TundraMC
13:05
폴짝쥐
13:05
방황하는물고기
13:05
폴짝쥐
13:04
파란화면
13:04
TundraMC
13:03
Colorful
12:56
milsa
12:55
milsa
12:51
유지니1203
12:49
白夜2ndT
12:46
白夜2ndT
12:41
마카
12:38
꿀먹은물고기
12:37
고자되기
12:36
소주
12:33
白夜2ndT
12:32

AMD
MSI 코리아
더함
한미마이크로닉스

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소