Programming Language 45

C 배열과 포인터

배열과 포인터 배열과 포인터는 유사한점이 있습니다. - 차이점이 있다는 이야기겠죠? 그럼 보다 자세하게 알아보겠습니다. char a[4]; 위의 선언문은 a라는 이름으로 4개의 char형(정수형 1byte) 데이터를 저장할 수 있는 기억공간을 만들어라 라는 것입니다. - 각각의 공간에 a[0], a[1], a[2], a[3]의 기억공간이 만들어집니다. (다 아시죠?)더 정확하게 말씀드리자면  1. a라는 이름의 주소번지를 담을 수 있는 공간이 만들어짐2. 메모리 내 빈 공간을 찾아 char 형의 데이터를 저장할 수 있는 연속된 4개의 공간 확보3. 연속된 4개의 기억장소의 첫번째 주소번지를 이전에 만들어 놓았던 a라는 기억장소에 저장 위 내용 중 1번은 완전히 포인터 선언을 이야기하고 있죠?유사합니다, ..

C 포인터

포인터 이해하기도 어렵고 악명높은 포인터에 대해 이야기해보도록 하겠습니다. 사전적 의미로는Point : 가리키다, 지적하다라는 의미를 갖고있습니다. 선언법은 아래와 같습니다. int *p;char *c;float *k; 와 같이 만듭니다. 그럼 일반적인 기억공간의 선언과 비교를 해보자면! 위 그림과 같이 int *p라고 선언할 때에는 p라는 이름의 주소번지를 담을 수 있는 기억장소가 만들어집니다.따라서, 이렇게 선언이 된 경우에는 p = 30; 과 같은 구문은 동작하지 않습니다. - p라는 공간은 주소번지만 담을 수 있는 공간이거든요!! - 30과 같은 정수형 변수는 넣을 수 없습니다. 주소가 아니기 때문이죠 정작 정수형 변수를 넣을 수 있는 공간은 *p라는 기억장소입니다. - *p = 30 은 된다 요..

C 비트연산자

1. 비트연산자의 종류 - 비트 연산자는 총 6가지가 있다. ~ : NOT, 1의 보수^ : XOR| : OR& : AND : 왼쪽 시프트 연산자>> : 오른쪽 시프트 연산자  2. ~ : NOT 연산자 - 해당 연산자는 다른 연산자와는 다르게 단항연산자이기 때문에 하나의 항을 가지며 결과는 1의 보수가 된다. - 예 :             변경 전                            변경 후    ~5 -> 0000 0000 0000 0101 -> 1111 1111 1111 1010 3. ^ : XOR 연산자 - 해당 연산자는 이항연산자로 특정한 비트에 대해 XOR 연산을 수행한다. - 배타적 논리합이라고도 하며 비교되는 두 대상이 같은 값이면 0, 아니면 1의 연산을 수행한다. - 예 ..

메서드 오버로딩

메서드 오버로딩 자바와 같이 C#도 메서드 오버로딩을 지원합니다. int add(int a, int b){    return a + b;} int add(int a, int b, int c){    return a + b + c;} void main(string[] args){    Console.WriteLine("두개" + add(10, 20));    Console.WriteLine("세개" + add(1, 2, 3));} 메서드의 이름은 같더라도 인자가 다른경우, 이것이 바로 오버로딩당연히두개 30세개 6 이렇게 결과가 나오게 됩니다.

파일스트림 (텍스트)

파일스트림에 대해서 알아보겠습니다,역시나 소스는 당시 작업하던 판소리 분류 프로그램입니다. - 2010년인가,, 2011년인가.. 가물가물합니다. 요고를 보면, 파일쓰기와 읽기가 동시에 이해가 되실겁니다주황색은 쓰기모드빨간색은 읽기모드          FileStream fs = new FileStream("ex.txt", FileMode.Append, FileAccess.Write); // 쓰기모드로 ex.txt를 읽고요,Append는 덧붙이는겁니다, 쓰기모드        FileStream fer = new FileStream("easttraining.txt", FileMode.Open, FileAccess.Read); // 읽기모드, easttraining.txt 파일을 읽어옵니다         S..

Get, Set - 클래스 간 값 공유

기억이 잘 나지 않는 get과 set 클래스간 변수 공유를 위해서는 반드시 필요합니다.   예를들면,   판소리 분류 프로그램의 FileWrite.cs 클래스입니다.  - 개인적으로 구현하던 프로그램입니다. using 문 namespace Wav {     public class FileWrite     {         double[,] east = new double[55, 21]; // 55개의 동편제 학습데이터         double[,] west = new double[55, 21]; // 55개의 서편제 학습데이터         public void EastRead()         {                 구현부 생략         }         public void WestR..