2016년 8월 31일 수요일

C# 학습을 위한 커뮤니티 사이트 소개





프로그래밍을 공부하고 개발을 하다보면 질문을 할 일들이 있게 되는데 
이런 경우 커뮤니티 사이트가 도움이 된다.

아래는 C#을 공부하면서 방문해 볼 만한 커뮤니티 사이트이다.



2016년 8월 2일 화요일

C언어에서 2차원 배열인 "포인터의 배열"에 대해서





C언어에서 2차원 배열인 "포인터의 배열"에 대해서

char *ptr;
⇒ 이렇게 선언되면 임의의 문자열을 저장할수 있는 char형 포인터 변수가 만들어 진 것이다.
임의의 문자열 자체가 가로축으로 가변인 1차원 배열인 것이다.

ex) 
ptr = "aldjsldjflsj asldjf  eof 임의의 길이의 문자열들 어쩌고 저쩌고 owqieul sdlj sdlfj  fowieowei";

ex)
int char_size = 123; //임의로 문자열 길이(가로 축이 가변인)를 지정할 수 있다.
ptr = (char*)malloc(sizeof(char) * char_size);

그런데 char *ptr[7]은 가로 축으로 문자열을 저장하는 1차원 배열(char형 포인터)이 7개 있다는 뜻이므로 가로축이 가변이면서 세로축이 고정(여기서는 7)인 2차원 배열이 되는 것이다.

char *ptr[3]의 형태 자체가 char *ptr이 배열로 3개 존재한다는 뜻이 되므로
char *ptr 자체가 가로 축으로 가변인 1차원 배열인데 1차원 배열 자체가 여러 개(여기서는 3개) 존재하는 형태이므로 char *ptr[] 자체가 곧 2차원 배열이 되는 것이다.

한 마디로 요약하자면 char *ptr[]의 형태는 갯수가 정해져 있고 길이는 서로 다른 여러 개의 문자열을 다룰 때 주로 사용이 되는 형태이다.

아래 코드는 명령행에서 임의의 길이의 문자열 인자를 줄수 있는 코드이다.
여기서 char *argv[]가 "포인터의 배열"이다.

#include <stdio.h>

void main(int argc, char *argv[])
{
int i = 0;
printf("%d개의 매개인자 입력\n", argc);

for (i = 0; i < argc; i++)
{
printf("%d : %s\n", i, argv[i]);
}
}

위 코드의 실행 파일이 test.exe라고 할때 다음과 같이 실행한다면
C:\>test source1.txt dest1.txt

출력 결과는 다음과 같다.

3개의 매개인자 입력
0 : test
1 : source1.txt
2 : dest1.txt