티스토리 뷰
#include// 배열 parameter int sum(int b[4]) { // int b[4] -> int * b로 바꿔도 상관없다. int i, sum = 0; for (int i = 0; i < (sizeof(b) / sizeof(b[0])); i++) { sum += b[i]; } return sum; } void main(void) { int a[4] = {1, 2, 3, 4 }; printf("%d\n", sum(a)); system("pause"); } /* 결과는 10이 나올 것 같다. 하지만 결과는 1이 나온다. 그 이유는 sum(a)에서 a은 포인터로 넘겨졌기 때문이다. 따라서 int b[4] == int * b이며 b의 type은 int *이다. int *은 4byte이기 때문에 (sizeof(b) / sizeof(b[0])) 은 1이 되어버린다. 이것을 해결하려면 sum의 인자를 2개로 해서 size도 같이 넘겨주는 형식으로 만들어야한다. */
'Coding > C' 카테고리의 다른 글
포인터 타입에 따른 메모리 접근.. (0) | 2018.05.26 |
---|---|
2차원 배열의 메모리 분석 (0) | 2018.05.26 |
1차원 배열의 포인터 (0) | 2018.05.22 |
little endian과 big endian (0) | 2018.05.22 |
포인터의 연산 (0) | 2018.05.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- erosion
- black top hat
- Sobel
- morphology
- 영상처리
- 캐니 엣지
- gradient
- upsampling
- canny
- Filter
- dilation
- laplacian of gaussian
- segmentation
- difference of gaussian
- equalizing
- bilateral filter
- Line Detection
- direction detection
- hough transform
- adaptive thresholding
- median filter
- top hat
- high pass filter
- mean filter
- pyrDown
- morphological operation
- pyrUp
- canny operator
- OpenCV
- Low pass filter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함