일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Web
- Python
- Javascript
- 웹해킹
- php
- 리눅스
- 경제
- backend
- 파이썬
- Linux
- 백엔드
- Shellcode
- 챗GPT
- 러닝스칼라
- flask
- deep learning
- Scala
- hackerschool
- mysql
- c++
- BOF 원정대
- ChatGPT
- 딥러닝
- 러닝 스칼라
- BOF
- hacking
- webhacking
- hackthissite
- 인공지능
- c
- Today
- Total
목록개발 및 관련 자료/C (31)
jam 블로그
I. 2차원 배열 이름의 포인터 타입 2차원 배열 이름이 가리키는 것은? 1차원 배열이름과 마찬가지로 배열의 첫번째 요소를 가리키는 포인터 이다. 다음의 소스를 보자 #include int main() { int a[3][2] = {1,2,3,4,5,6}; printf("a[0] : %d\n",a[0]); printf("a[1] : %d\n",a[1]); printf("a[2] : %d\n",a[2]); printf("a : %d\n",a); printf("a[0][0] : %d\n",&a[0][0]); return 0; } 위의 소스의 결과값을 보다 시피 a나 a[0]나 &a[0][0] 다 같은 주소값이 나온다. 2차원 배열 이름 +1 : 배열 이름을 이용한 포인터 연산 #include int main..
I. 포인터의 포인터에 대한 이해 더블 포인터가 가리키는 것은 싱글포인터 int main() { double val = 3.14; double *ptr1 = &val; double **ptr2 = &ptr1; printf("val : %lf\n",val); printf("&val : %lf\n",&val); printf("ptr1 : %lf\n",ptr1); printf("&ptr1 : %lf\n",&ptr1); printf("*ptr1 : %lf\n",*ptr1); printf("ptr2 : %lf\n",ptr2); printf("&ptr2 : %lf\n",&ptr2); printf("*ptr2 : %lf\n",*ptr2); printf("**ptr2 : %lf\n",**ptr2); } 위의 소스를 컴..
I. 다차원 배열 2차원 배열의 선언 2차원 배열의 선언과 의미 1차원 배열 2차원 배열 가로가 열 세로가 행을 가리킨다. 자료형 배열이름[행][열]; 이런식으로 선언하면 된다. 실제 메모리상의 그림 위와 같은 그림 처럼 메모리에 잡힌다. 2차원 배열! 선언과 동시에 초기화 (여기서 부터는 그림 귀찮아서 안 그립니다.) 초기화 case 1: 행 단위로 모든 요소들을 초기화 하는 경우 int main() { int somang[3][3]= { {1,2,3},{4,5,6},{7,8,9} }; } 위와 같이 배열의 개수 만큼 써서 초기화를 해주면 된다. {} 당 한 행으로 보면 된다. 초기화 case 2: 행 단위로 일부 요소들만 초기화하는 경우 int main() { int somang[3][3]= { {1..
I. 함수의 인자로 배열 전달하기 함수의 인자 전달 방식 인자 전달의 기본 방식은 복사이다. 배열을 함수의 인자로 전달하는 방식 #include void fct(int *arr2); int main() { int arr1[2] = {1,2}; fct(arr1); printf("%d\n",arr1[0]); return 0; } void fct(int *arr2) { printf("%d\n",arr2[0]); arr2[0] = 3; } fct함수를 호출 하면서 배열의 이름을 인자로 전달하는데 이때 배열의 이름 즉, 배열의 주소를 전달하는 것이다. #include int ArrAddr(int *pArr, int n); int main(void) { int arr[10] = {1,2,3,4,5,6,7,8,9,1..
I. 포인터와 배열의 관계 배열의 이름은 무엇을 의미하는가? 배열의 이름은 포인터다. 단 그 값을 바꿀수 없는 상수라는 점이 일반적인 포인터와의 유일한 차이점 #include int main() { 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("배열이름 : %d\n",a); return 0; } 위의 소스를 보면 처음의 printf는 a[0],a[1]의 값을 찍는거고 , 두번째 printf는 각각의 주소값을 세번째 printf는 배열이름에 대한 주소를 찍는다. 결과를 보면 &a[0]와 a는 같다. 비교조건/비교대상 포인터 배열이름 이름이 존재하는가? Yes Yes 이름은 무엇을 나타내..