본문 바로가기

Programming399

문자열 배열? char형 포인터 배열.. /*문자열 배열... 생성???이제 조금 낯설다. 복습이 아니라 새로운 개념을 배우는 느낌이 든다.*/ #include int main(void) {char* arr[3] = {"ILOVEYOU","TCI/IP","WHOAMI"}; printf("%s\n", arr[0]);printf("%s\n", arr[1]);printf("%s\n", arr[2]); return 0;} 2017. 3. 10.
포인터 배열 예제 코드 /*포인터 배열..? 이건 어디에 쓰는거야?*/ #include int main(void) {int a = 10, b = 20, c = 30;int* arr[3] = { &a, &b, &c }; printf("%d\n", *arr[0]);printf("%d\n", *arr[1]);printf("%d\n", *arr[2]); return 0;} // 어디에 쓰나용???그리고 티스토리에는 코드 아름답게 구현 안되나요...이런 흰백 바탕은 너무 고지식해보여요. 2017. 3. 10.
문자열 상수에 대한 이해... /*문자열 상수에 대한 이해...*/ #include int main(void) {char *str1 = "Good!";char *str2 = "Good!";printf("%d, %d\n", str1, str2);return 0;} // 아하 이래서 컴퓨터가 정말 매력적이야 ㅠㅠ 컴파일러가 알아서 최적화를 해준다니. 같은 상수열을 선언하면 2개의 서로 다른 이름의 포인터를 선언하더라도 같은 곳을 가르켜서 메모리를 따라 할당하지 않는다... 2017. 3. 10.
왜 포인터 문자열은 상수고 배열 문자열은 변수이지? /*설명이 이해가 안가는 부분이 있다.왜 배열 문자열 선언은 변수이고 포인터는 상수인가?그전까지는 배열의 주소값은 상수이고 포인터의 주소값은 변수라서...문자열의 경우는 반대인가?*/ #include int main(){char str1[5] = "abcd";char *str2 = "ABCD"; printf("%s\n", str1);printf("%s\n", str2); str1[0] = 'x';//str2[0] = 'x'; printf("%s\n", str1);printf("%s\n", str2); return 0; } 뭔가용. 그대로 기억은 하고 있되 이해는 가지 않는 부분... 2017. 3. 10.
Pointer and Array practice... /*뭐가 중요하다는 거지. 어렵다 중요하다... 내가 중요하다고 느껴야하는데 말이지그것을 깨닫기 전에는 아 이런게 있구나 그렇게 넘어가자.누군가가 어렵다고 느끼는 것이 내게는 어렵게 느껴지지 않을 수도 있다.*/ #include int main(void) {int arr[2] = { 1,2 };int* pArr = arr; printf("%d, %d\n", arr[0], *(arr + 1));printf("%d, %d\n", pArr[0], *(pArr + 1)); return 0;} 2017. 3. 10.
Pointer practice... /*예제 하나씩 마스터하고 있다...과제는 언제하지... 어언 시간이 새벽 1시20분인데적어도 3시에는 자야하지 않겠니. 그래도 기본부터 하고 있다는 것에 점수를 주고 싶다.과제보다 내 실력에 내 페이스에 맞춰가야지. 그래야 탑을 잘 쌓을 수 있다 견고하게.*/ #include int main(void){int arr[5] = { 1,2,3,4,5 }; int* pArr = arr;printf("%d\n", *pArr); printf("%d\n", *(++pArr));printf("%d\n", *(++pArr)); printf("%d\n", *(pArr + 1));printf("%d\n", *(pArr + 2)); return 0; } // 포인터... 주소값 그리고 포인터에서 +1, +2 를 의미하는 .. 2017. 3. 10.
Pointer and Array /*포인터와 배열의 관계?배열 이름도 포인터라는 것이다.값을 바꿀 수 없는 상수? 무엇이? 배열의 이름을 바꿀 수 없다는 것인가.배열 인덱스의 값을 바꿀 수 없다는 것인가 예제를 통해서 확인하자.*/ #include int main(void) {int a[5] = { 0,1,2,3,4 };printf("%d, %d\n", a[0], a[1]);printf("%d, %d\n", &a[0], &a[1]);printf("배열 이름:%x\n", a);return 0; } // 아하 배열 이름이 메모리 주소 이름이구나... 16진수로 표현하니 단박에 알겠다. 그리고 왜 예제를 실행보라고 하는지 알겠다. 훨씬 직관적인 이해가 쉽고 기억에도 오래갈 것 같은 느낌! 2017. 3. 10.
Pointer different type /*한번 더 실행해보기.한번 실행 할때마다 자신감 +1*/ #include int main(void){int a = 10;int *pA = &a; double e = 3.14;double *pE = &e; printf("%d %f\n", *pA, *pE);return 0;} // 이렇게 해야 메모리를 참조하는 방법을 알려준다? 포인터를 이용해서 변수를 참조하는 경우 몇 바이트를 읽어들여야 할지 알 지 알려준다. 메모리 할당이랑 관련이 있는 것 같다. 확 이해가 되지는 않는다 아직... 2017. 3. 10.
Pointer reference and value basic example /*포인터 주소값 출력과 변수 출력 연습하기*/ #include int main(void){int a = 2005;int* pA = &a; printf("pA:%x\n", pA);printf("&a:%x\n", &a); (*pA)++; printf("a:%d\n", a);printf("*pA:%d\n", *pA); return 0; } // reflection 의 힘...2005 라는 a 변수 선언과 초기화 하고 pA라는 포인터를 선언하고 a라는 변수의 주소값을 넣는다. 이것은 변수이기에 연결이 되어 있다. 그래서 언제든지 같이 변동이 된다는 사실 이해하기. 그리고 주소값을 보기 위해서 포인터 변수 pA 와 주소값을 나타내는 연산자 &a를 사용하여 주소값을 확인한다. 메모리에 주소값은 16진수로 표현되기.. 2017. 3. 10.
Arrray reading string /*문자열 입력 받기... 다시 시도*/ #include int main(void) {char str[50]; printf("문자열을 입력하세요.");scanf_s("%s", str, sizeof(str));printf("입력한 문자열은 [%s] 입니다. \n", str);} // sizeof(str) 안하면 오류 난다. 왜 일까. 왜 사이즈를 알려주어야지?그리고 영어로 하는 습관을 들이자... 한영키 누르는거 매우 귀찮...좋은 책 추천받은 것으로 연습해야지. 2017. 3. 10.