포인터란 주소값을 저장하는 기능임. 그런데 주소값이란 무엇인가?주소값은 데이터가 저장된 메모리의 시작부분을 말한다. 이렇게 말하니 좀 어렵게 들린다. 쉽게 설명을 해보겠다. 그에 앞서 변수에 대해 알아보자. 변수는 정보를 저장하는 장소다. 만약에int a = 10; 이 변수 a에 대해서 알아보자.a라는 변수에 10이라는 값을 저장한 것이다. 그런데int *p = &a; 라고 적힌 것을 발견한다. 해석하자면 포인터 p에 변수 a의 주소값을 저장한 것이다.** & : 주소 연산자로 변수의 이름 앞에 사용하고 해당 변수의 주소값을 반환함.(앰퍼샌드ampersand라고 읽음) 그렇다면 주소값은 대체 무엇을 의미하는 것일까?주소값은 데이터가 저장된 메모리의 시작부분을 의미한다. #include int main()..
1.기본 구성#include int main(void){ printf("Hello, World!\n"); return 0;} 1) #include 예약어. 특정한 의미, 기능을 가지고 있는 단어. preprocessorinclude - 포함하다 이므로 뒤에 오는 것을 이 코드에 포함하겠다는 뜻 2) standard input ouput의 약자 h는 파일의 확장자로 header의 약자임즉, 표준입출력에 관련된 내용을 담고 있는 확장자가 h인 파일의 이름 3) 그렇다면 대체 무엇을 포함하는가?프로그래머들은 프로그램을 작성하며 미리 정해져있으면 좋겠다고 생각한 함수들이 있음. 그것들을 모아놓은 걸 불러오는 거임. ex)printf 함수컴파일러에게 printf 함수가 출력 역할을 한다는 것을 알려주는 것이 ..
내가 배우는 게 무엇인지 제대로 알지 못하고 배운다면 그건 하수다 1. 들어가기에 앞서 프로그래밍이란 무엇인가. 코딩이란 무엇인가. CRUD란 무엇인가.나는 이런 질문에 대답하지 못한다. 그래서 시작하는 기초부터 다시 다지기 프로젝트. 2. C언어 개요 1) 프로그래밍이란? 프로그래밍. 프로그램이란 무엇인가? 프로그램이란 컴퓨터가 작동할 수 있도록 내리는 명령어의 모음집을 일컫는데, 프로그래밍이란 이를 만드는 과정이다. 이 프로그램이 모여서 소프트웨어가 되는 것.그리고 이 소프트웨어를 만드는, 즉 프로그램을 만드는 언어가 '프로그래밍 언어' 프로그래밍 언어란, 사람과 컴파일러가 모두 이해할 수 있는 약속된 형태의 언어를 말한다. 그렇다면 컴파일러란?프로그래밍은 분명히 프로그래밍 언어로 작성될 것이다.그..
포인터를 써서 변수의 값에 10을 더하는 경우 #include // 표준 입출력 관련 기능을 사용하기 위해 stdio.h 헤더 파일을 포함시킵니다. // 'add_ten' 함수 선언: 이 함수는 정수형 포인터를 매개변수로 받아 그 값을 10 증가시킵니다. void add_ten(int *pa); int main(void) { int a = 10; // 'a'라는 이름의 정수 변수를 선언하고 10으로 초기화합니다. add_ten(&a); // 'a'의 주소를 'add_ten' 함수에 전달합니다. 이로써 함수 내에서 'a'의 값을 변경할 수 있습니다. printf("a : %d\n", a); // 'a'의 값을 출력합니다. 'add_ten' 함수에서 10이 추가되어 20이 출력됩니다. return 0; //..
c언어의 장점 1) 하드웨어에 직접적으로 영향을 미칠 수 있음(ex. 컴퓨터 끄기 가능) 2) 이식성 => 기계에 가까운 언어이므로 기계에 이식하기가 편함 소스파일 c언어로 작성한 문서를 말함 { int 선언 : 뒤에 나올 내용을 ~~라고 선언. 정수형 머시기지만 c언어 만든 사람이 이러자고 약속한 부분. int main(void) => void는 랑 비슷하게 라이브러리를 불러오는 것. 그리고 이 문장 자체는 이걸 메인으로 하겠다는 선언임 } main 함수 시작을 의미함. 반드시 작성해야 함 printf 함수 줄바뀜이 자동으로 안됨(파이썬과는 다름) printf("Be happy"); "", '' < 이거의 차이 구분할 필요가 있음 * 문자 'a' 문자열 "apple"(c언어는 이걸 배열과 비슷하게 받아..
#include int main(void){ int a = 10; int b = 20; char c[10] = "apple"; char d[10] = "pie"; printf("%d\n", a + b); printf("%s\n", c + d); return 0;} 실패하게 됨. 더하기 연산자로 문자열을 더할수는 없음. 그러므로 문자열로 연산할 때는 문자열 연산에 사용하는 함수를 따로 사용해야함. #include #include int main(void){ char str1[80], str2[80]; char *resp; printf("2개의 과일 이름 입력 : "); scanf("%s%s", str1, str2); if..
아스키코드문자 상수 'a'는 정수 값 97로 바뀜.아스키코드 : 컴퓨터는 모든 값을 이진수로만 이해할 수 있음. 그러므로 하나의 룰을 만든 것인데 그것이 아스키코드. 키보드에서 9를 누르고 싶다.키보드 : 9(상수) => 0x39(아스키코드 16진수) => 39를 이진수로 만드는 방법 3 98 4 2 1 ㅣ 8 4 2 10 0 1 1 1 0 0 1 = 이진수9를 만들려면 8, 1을 더하면 되니까 8과 1에만 1.3을 만들려면 2와 1을 더하면 되니까 그 자리에만 1. 특징 )알파벳과 숫자는 각각 연속된 아스키 코드 값을 가짐소문자 > 대문자제어 문자는 백슬래시와 함께 표시하여 출력할 때 그 기능을 ..
#include int main(void){ // 정수형 배열 ary를 선언합니다. 크기는 3으로 지정합니다. int ary[3]; // 정수형 포인터 pa를 선언하고, 배열 ary를 가리키도록 초기화합니다. int *pa = ary; // 정수형 변수 i를 선언합니다. int i; // 배열의 첫 번째 요소에 10을 할당합니다. *pa = 10; // 배열의 두 번째 요소에 20을 할당합니다. 포인터 산술을 사용하여 두 번째 요소에 접근합니다. *(pa + 1) = 20; // 배열의 세 번째 요소에 첫 번째 요소와 두 번째 요소의 합을 할당합니다. pa[2] = pa[0] + pa[1]; // 배열을 순회하면서 각 요소를 출력합니다..
#include struct jsu { char nae[12]; int os, db, hab, hhab;};int pp[3] = {11, 22, 33} int main(){ struct jsu st[3] = {{"데이터1", 95, 88}, {"데이터2", 84, 91}, {"데이터3", 86, 75}}; struct jsu* p; p = &st[0]; (p + 1)->hab = (p + 1)-> os + (p +2)->db; (p + 1)->hhab = (p + 1)->hab + p->os + p->db; printf("%d", (p + 1)->hab + (p + 1)->hhab);}드디어 깨달은 코드블럭넣는방법..지금까지 왜 표를 그렸던 것인가.. char ..