'Study'에 해당하는 글 14건

1. 포인터와 메모리

- 포인터 - 메모리의 특정위치를 가리킬 떄 사용

- 구성 - 정수형으로 된 메모리 주소가 저장


2. 포인터 선언방식

포인터는 *  를 사용하여 선언

이미 선언된 포인터에 * 를 사용하면 포인터에 저장된 메모리 주소(역참조)하여

값을 가져오거나 저장가능



자료형 *포인터이름;        //포인터 선언


*포인터;                        // 포인터를 역참조하여 값을 가져옴

*포인터 = 값;                 // 포인터를 역참조하여 값을 저장


변수의 메모리 주소를 구할 때 주소 연산자 & 를 사용


포인터 = &변수;      // 변수의 메모리 주소를 포인터에 저장



그림 1.  포인터* 와 & 연산자의 관계


예제)


1
2
3
4
 
int age = 20;
int *pointer = &age          // 포인터를 선언하고 변수의 메모리 주소로 저장
printf("%d\n"*pointer);    //20 
cs


 그림 2.  포인터와 포인터 역참조




3. 포인터와 주소의 자료형


int *a;             //pointer to int 라고 읽음

I * a               //  변수의 역참조, pointer to 제거하여 int 로 만듬

int b;              // &b 와 같이 변수의 주소를 구한 것 : address of int 라고 읽음



char *cPtr1;                // char형 포인터 선언
*cPtr1 = 'a';                // char의 크기 1바이트만큼 역참조하여 값을 저장
    
short *numPtr1;            // short형 포인터 선언
*numPtr1 = 100;          // short의 크기 2바이트만큼 역참조하여 값을 저장

int *numPtr2;              // int형 포인터 선언
*numPtr2 = 100;         // int의 크기 4바이트만큼 역참조하여 값을 저장

long long *numPtr3;    // long long형 포인터 선언
*numPtr3 = 100;        // long long의 크기 8바이트만큼 역참조하여 값을 저장


4. void 포인터 (범용 포인터)

자료형 크기가 정해지지 않았으므로 역참조 할 수 없음


5. 이중 포인터


자료형 **포인터이름;       // 이중 포인터 선언

**포인터;                     // 이중 포인터를 역참조하여 값을 가져옴
**포인터 = ;              // 이중 포인터를 역참조하여 값을 저장


int **a;     //pointer to pointer to int


6. 메모리 할당 하기

메모리를 바이트 단위로 할당 할 수 있다. 메모리를 할당 했으면 반드시 free 함수로 메모리 해제 필요


자료형 *포인터이름 = malloc(크기);         // 일정 크기만큼 동적 메모리 할당

free(포인터);                                        // 동적 메모리 해제


7. 메모리를 특정값으로 설정하기


memset(포인터, 설정할값, 크기);


8. 널포인터  (null pointer)

포인터가 아무것도 가리키지 않은 상태


자료형 *포인터이름 = NULL;        //포인터에 NULL 할당


저작자 표시
신고

'Study > C lang' 카테고리의 다른 글

코드 최적화 하기  (0) 2016.09.17
포인터와 메모리 핵심정리  (1) 2016.08.31
버블정렬 [Bubble Sort]  (2) 2016.08.09

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글 하나 달렸습니다.
  1. 잘 읽었습니다. :)
secret

SDI 와 MDI 는 GUI 프로그램을 만들때 많이 사용합니다.

한개의 화면에 여러개의 작은 화면을 띄웁니다.


A. 기본개념


1) 메인 윈도우는 메뉴바, 툴바, 상태바, Dock Widget, Central Widget 을 메인 윈도우의 레이아웃에 배치 할 수 있습니다.

2) 사용가능한 Qt API 는 아래에 명시된 QToolBars, QDocWidget, QMenuBar 입니다.


아래와 같이 그림으로 그려봤습니다.

 B. 클래스 상속관계





저작자 표시
신고

'Study > Qt 프로그래밍' 카테고리의 다른 글

QDialog 의 SDI 와 MDI 개념  (0) 2016.08.23

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret


수에 대한 정렬을 해야 하는데 아는 것은 없고,찾다보니 버블정렬로

구현하는 방법이 있었네요..

정렬은 데이터 처리에 기본이죠..


데이터 처리의 기본은 정렬과 찾기 입니다..


정렬(Soring) 이란?

데이터를 순서대로 나열하는 것


100, 99, 98, , , , , , , 2, 1        ▶ 내림차순


1,2,3, , , , , , , , , , , , ,99, 100   ▶ 오름차순



따져봅시다..  5개 숫자를 오름 차순으로 정렬하는데

규칙이 있습니다. 좌측이 크면 배열을 바꾸는 겁니다.

종이에 칸을 만들고 적어보면 이해가 됩니다.




4회전을 하여 오름차순 정렬을 마쳤습니다. 잘 보면 규칙이 보입니다.

숫자가 5개인데 회전은 4번 했습니다. N - 1 번 움직임을 알 수 있습니다.


배열 개수를 아무거나 두고 하면 이렇게 나옵니다.
회전 밑에 보면 배열 번호를 붙였습니다. 이것은 배열위치를 바꾼 번호입니다.

코드상으로 버블 정렬을 해봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

//bubble_sort.c
#include
 <stdio.h>
 
int main()
{
  int a[] = {25,65,45,35,55};
 
  int i , j , tmp, n;
 
  n = sizeof(a) / sizeof(int);
  
  puts("------------------");
  puts("**** 정수 정렬 ****");
  puts("------------------");
 
  //원본출력
  puts("**** 원 본 출 력 ****");
  for(i = 0; i < n ; i++)
     printf(" a[%d] = %d\n", i, a[i]);
 
  //거품정렬(Bubble sort)
  for( i = 0; i < n - 1; i++)
  {
    for(j = 0; j < n - 1 -i; j++)
   {
  if(a[j] > a[j+1])
{
  tmp = a[j];
      a[j] = a[j+1]; 
      a[j +1= tmp;
}
    }

}
 
    puts("\n **정렬 후 출력**");    
    for (i = 0; i < n; i++)        
       printf(" a[%d] = %d \n", i, a[i]);    
 
   puts(" ---------------");

  } 
 
}


 cs






저작자 표시
신고

'Study > C lang' 카테고리의 다른 글

코드 최적화 하기  (0) 2016.09.17
포인터와 메모리 핵심정리  (1) 2016.08.31
버블정렬 [Bubble Sort]  (2) 2016.08.09

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. for문 코드 잘 못됐네요. 결과가 제대로 안 나옵니다.

    for( i = 0; i < n - 1; i++) 문의 대괄호 닫는 위치를 조정해야 할 것 같습니다.
secret

1. 배열이 아니고 자료형 일 때

형식 * 변수이름 = new 형식;

delete 변수이름;



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{    
 
  int *pData = new int;     

   int *pNewData = new int(50);    

  *pData = 100;    
 
  std::cout << *pData << std::endl;    
  std::cout << *pNewData << std::endl;    
 
  delete pData;    
  delete pNewData;
 
}
cs





2. 배열형태


형식 * 변수이름 = new 형식[요소개수];

delete[ ]  변수이름;


malloc의 코드는 이렇습니다..


int *p = (int*)malloc( sizeof(int) * n);       //메모리 크기를 설정

free(p);


굳이 메모리 크기를 정해서 하는 것 보다

new 연산자를 쓰면 훨씬 편합니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{    
int *arr = new int[5];   //20byte    
    
    for (int i = 0 ; i < 5 ; ++i )    
      arr[i] = (i + 1* 10;     
    
    for(int i = 0 ; i < 5 ; ++i )            
       cout << arr[i] << endl;    
     
    
    delete[] arr;    
    
    return 0;
 
}
cs


갑자기 궁금해졌음  ++i i++ 뭔차이인지??


++i는 i를 바로 증가시켜서 반환하지만
i++은 임시변수를 만들어서 i를 대입하고 i를 증가시키고 임시변수를 반환하는 형식이었어요.

++ i 가 연산속도가 빠르다.


저작자 표시
신고

'Study > light_C++' 카테고리의 다른 글

ch2-4 함수 다중 정의  (0) 2016.09.07
ch2-3 함수 템플릿  (0) 2016.09.07
New 와 delete 연산자  (0) 2016.07.24
자료형  (0) 2016.07.24
Chap 2. C++ 함수와 네임스페이스  (0) 2016.06.27

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret

자료형

Study/light_C++ 2016.07.24 22:51

C++ 자료형을 정리해보겠습니다.


자료형 

설명 

 long long

 64비트 정수 (컴파일러에 따라 약간 다름)

 char16_t

 16비트 문자 (ex. char16_t a = u'A'; )     //유니코드 처리

 char32_t

 32비트 문자 (ex. char32_t a = u'A'; )     //유니코드 처리

 auto

 컴파일러가 자동으로 형식을 규정하는 자료형 (ex. auto a = 10;)

 decltype(expr)

 expr 과 동일한 자료형 (ex. int x = 10; decltype(x) y = 20; )


저작자 표시
신고

'Study > light_C++' 카테고리의 다른 글

ch2-4 함수 다중 정의  (0) 2016.09.07
ch2-3 함수 템플릿  (0) 2016.09.07
New 와 delete 연산자  (0) 2016.07.24
자료형  (0) 2016.07.24
Chap 2. C++ 함수와 네임스페이스  (0) 2016.06.27

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret


알아두기


1. namespace

다중 정의와 범위를 지정해서 체계적으로 코드로 관리할 수 있게 하는 것.


2. default 매개 변수

기본값을 정해서 함수 이름만 쓰고 함수를 실행한다.


3. 다중 정의

이름은 같으나 내맘대로 자료형을 바꿔도 된다.


4. 네임스페이스

내가 원하는 함수, 변수 등에 소속감 주기


 2.1 디폴트 매개변수


결과값을 추측해보세요..


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "stdafx.h"
#include <iostream>
 
//nParam 매개변수의 디폴트 값은 10
int TestFunc(int nParam = 10)
{    
    return nParam;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 

    std::cout << TestFunc() << std::endl;

  
std::cout 
<< TestFunc(20<< std::endl;
    
}
cs


결과는  10,20


매개변수의 디폴트 값을 선언한 함수는 호출자 코드에서 실인수를 생략한 채 호출할 수 있습니다.

매개변수의 디포트 값은 반드시 함수 원형의 선언부분에 기술해야 한다!!



저작자 표시
신고

'Study > light_C++' 카테고리의 다른 글

ch2-4 함수 다중 정의  (0) 2016.09.07
ch2-3 함수 템플릿  (0) 2016.09.07
New 와 delete 연산자  (0) 2016.07.24
자료형  (0) 2016.07.24
Chap 2. C++ 함수와 네임스페이스  (0) 2016.06.27

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret