336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

typedef struct _node

{

                  LData data;

                  struct _node * next;

} Node;

 

typedef struct _linkedList

{

                  Node * head;

                  Node * cur;

                  Node * before;

                  int numOfData;

                  int (*comp)(LData d1, LData d2);

} LinkedList;


void SInsert(List * plist, LData data)

{

                  Node * newNode = (Node*)malloc(sizeof(Node));

                  Node * pred = plist->head;

                  newNode->data = data;

 

                  while(pred->next != NULL &&

                                   plist->comp(data, pred->next->data) != 0)

                  {

                                   pred = pred->next;

                  }

 

                  newNode->next = pred->next;

                  pred->next = newNode;

 

                  (plist->numOfData)++;

}


멤버 연산자(.)

구조체의 멤버를 참조하기 위해 사용하는 연산자

구조체 이름.멤버 이름


포인터 멤버 연산자(->)

구조체 포인터의 멤버를 참조하기 위해 사용하는 연산자

구조체 포인터 이름->멤버 이름


pred->next->data


어떻게 이런 표현이 가능한지 문법적으로 조금 더 알아보고자 위의 정의들을 찾아보았다.

정의를 정확히 알고나니 위 표현을 해석하는 것은 쉬웠다.


즉, 


pred는 Node 구조체 포인터이므로 pred->next는 다음 Node를 가리키고, 그 대상은 head의 next다.

head의 next가 가리키는 대상 또한 Node 구조체 포인터이므로 


한번 더 -> 연산자를 이용해서 그 멤버 내의 data를 참조하는 것은 가능하게 된다.





'language > 자료구조' 카테고리의 다른 글

AVL 트리와 균형 인수  (0) 2016.08.07
블로그 이미지

saylin

,

FILE* fopen

language/C|C++ 2016. 7. 26. 07:29
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

fopen 함수 원형


#include <stdio.h>


FILE* fopen(const char *filename, const char* mode)


fopen 함수는 매개변수로 파일이름(의 문자열 배열), 입출력 모드(의 문자열 배열)을 받는다.

함수 호출 뒤, fopen 함수는 (포인터이므로) 각각의 정보에 대한 주소값을 리턴한다.


즉, 메모리 공간 상에 존재하는 파일이름 정보가 저장된 메모리 주소와 

입출력 모드 정보가 저장된 메모리 주소값을 리턴한다.



파일을 불러들일 경우, 


FILE* f = fopen("c:\test.txt", "rt")


FILE 구조체 변수를 선언할 때 포인터 변수를 선언하는데, 그 이유는 fopen 함수가 주소값을 리턴하기 때문. 



'language > C|C++' 카테고리의 다른 글

C언어 정리 2  (0) 2016.08.08
typedef  (0) 2016.08.06
문자와 문자열 처리 함수  (0) 2016.07.25
데이터 상수화, 포인터 상수화  (0) 2016.07.21
SwitchViewDemo  (0) 2016.06.06
블로그 이미지

saylin

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

21-1. 스트림과 데이터의 전송


스트림(stream):    프로그램과 하드웨어(키보드, 모니터,..)를 연결해주는 소프트웨어적으로 구현된 다리

 연속된 데이터의 열(line)


표준 스트림(standard stream): 표준 입출력 스트림. 기본적으로 제공되는 스트림


stdin      : 표준 입력 스트림

stdout    : 표준 출력 스트림



21-2. 문자 단위 입출력 함수


putchar

fputc


getchar

fgetc


EOF: 오류발생 및 파일의 끝에 도달한 경우 호출되는 반환 값(-1). Ctrl+Z


21-3. 문자열 단위 입출력 함수


puts: 자동 개행

fputs


gets: Overflow 발생 가능성

fgets: 문자열 마지막에 NULL 삽입



21-4. 표준 입출력 버퍼


버퍼(buffer): 여분의 임시 메모리 공간

버퍼링(buffering): (성능 향상의 목적으로) 버퍼(임시 저장소)에 데이터를 임시 저장해 두는 것.


fflush: 버퍼를 비우는 작업을 하는 함수.



21-5. 문자열 조작 함수





'language > C|C++' 카테고리의 다른 글

typedef  (0) 2016.08.06
FILE* fopen  (0) 2016.07.26
데이터 상수화, 포인터 상수화  (0) 2016.07.21
SwitchViewDemo  (0) 2016.06.06
디폴트 대입연산자에 의한 문제점  (0) 2016.05.07
블로그 이미지

saylin

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


const int* n : 데이터 상수화(n이 가르키는 데이터 값 변경 불가)


int* const n : 포인터 상수화(n이 가르킬 변수 변경 불가)



'language > C|C++' 카테고리의 다른 글

FILE* fopen  (0) 2016.07.26
문자와 문자열 처리 함수  (0) 2016.07.25
SwitchViewDemo  (0) 2016.06.06
디폴트 대입연산자에 의한 문제점  (0) 2016.05.07
#pragma  (0) 2016.05.02
블로그 이미지

saylin

,