이.. 포인터에 관한 문제가.. 좀...

min2to의 이미지

영 이해가 않가서...... 남기네여;; 흑흑;;

#include <stdio.h>

int ArrAdder(int* pArr, int n);

int main(void)
{
 int arr[10]={1,2,3,4,5,6,7,8,9,10};
int sumofarr;

sumofarr=ArrAdder(arr, sizeof(arr)/sizeof(int)); <-이줄이.. 무슨뜻을.. 말하는건지..도무지.. 알 길이없네여;; 

printf("배열의 총 합 :%d \n",sumofarr);

return;

}

int ArrAdder(int* pArr, int n)
{
 int sum=0;
 int i;

 for(i=0; i<n; i++)  <-이줄이 말하는.. n값은.. 뭔가여.....ㅜ.ㅜ
                         선언된.... 정수의 값을 말하는건가여?....
                        (음... .for문장에서.. 저 값이 실행될때까지..
                         해주는건 .. 알고여;;;)
 sum+=pArr[i];    <-이줄이 뜻하는건.. sum=sum+pArr[i]맞져;..?
                        그럼.. pArr[i]는.. 배열 이져?... 그럼.. 음...
                        이 배열은.. 출력되서.. 어디에 연관이 있는건지..
                       ㅠ.ㅠ.ㅠ.... .. .. . . 
                        

return sum;
}



흑흑.. 선배님들....죄송하지만.. 부탁드립니다..
감사합니다.... ;; __꾸벅;;

jachin의 이미지

책은 천천히 잘 보고 계신거죠? 처음 공부를 시작하실 때에는 천천히 이해하시면서 읽어야 합니다.

잠시 정신이 아득해지셔서 이해가 안되셨으리라 믿겠습니다. 자세히 알려드릴터이니 다음엔 책에서 해답을 찾으세요.

1. sumofarr=ArrAdder(arr, sizeof(arr)/sizeof(int)); 의 의미

int ArrAdder(int* , int) 함수를 실행한 결과값을 sumofarr 에 대입하라는 뜻입니다.

이 때, sizeof(arr)/sizeof(int) 는 arr 의 원소 갯수입니다. 즉 10이 되겠지요.

2. for (i=0; i<n; i++) 에서의 n의 역할

함수 int ArrAdder(int*, int) 는 두번째 인자로 n 을 받습니다. main() 함수 안에서 sizeof(arr)/sizeof(int) 로 지정이 되어 있으므로 함수 내에서는 10의 값을 받습니다. for문이 실행하는 최대 횟수를 지정하기 위해 n 의 값을 참조하고 있는 것입니다.

3. sum+=pArr[i]; 는 sum=sum+pArr[i]; 와 같습니다.

fox9의 이미지

int arr[10]={1,2,3,4,5,6,7,8,9,10};
int sumofarr;

sumofarr=ArrAdder(arr, sizeof(arr)/sizeof(int)); <-이줄이.. 무슨뜻을.. 말하는건지..도무지.. 알 길이없네여;; 

sizeof 명령어는 해당 인자의 메모리크기를 리턴합니다.
고로 처음앞의 sizeof(arr)은 int형 배열인 arr의 전체 크기를 리턴합니다. (위에서는 int형이 4byte라고 할때 int arr[10]으로 선언을 했으니 4byte인 int가 10개라서 40을 리턴하겠지요)
그리고 뒤의 sizeof(int)는 int형의 크기를 리턴합니다.
(32bit 머신에서는 4byte 겠지요?)
고로 위의 sizeof(arr)/sizeof(int) 문은 결국 arr의 배열의 갯수를 구하는 문장입니다.
int형 배열인데 그것을 int형의 크기로 나누었으니 결국 배열의 갯수를 리턴하겠지요.

int ArrAdder(int* pArr, int n)
{
 int sum=0;
 int i;

 for(i=0; i<n; i++)  <-이줄이 말하는.. n값은.. 뭔가여.....ㅜ.ㅜ
                         선언된.... 정수의 값을 말하는건가여?...

함수 ArrAdder 에서 인자로 넘어온 값 n 입니다.
위의 메인에서 sizeof(arr)/sizeof(int)로 호출했으니 결국 arr의 배열의 갯수인 10이 n에 들어가 있겠죠
min2to의 이미지

감사합니다.. 복받으실꺼예여 !!;;

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

min2to의 이미지

흠.. 오늘 다시 복습해서 보니까..

저 문제의 답이.. 55가 나오더라구여..

45가 나올줄 알았는데.. 그래서 그런데여....

sumofarr=ArrAdder(arr, sizeof(arr)/sizeof(int));

여서여.. arr의.. 값이. 10이 출력되어서 + 준다는 소리인가여?..

for값에 의해 출력된.. sizeof값을..

흠..(머리가 않좋아.. 보고 또 보고 또 보고했는데도.... 해답을못찾겟어서..)..

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

lifthrasiir의 이미지

min2to wrote:
흠.. 오늘 다시 복습해서 보니까..

저 문제의 답이.. 55가 나오더라구여..

45가 나올줄 알았는데.. 그래서 그런데여....

sumofarr=ArrAdder(arr, sizeof(arr)/sizeof(int));

여서여.. arr의.. 값이. 10이 출력되어서 + 준다는 소리인가여?..

for값에 의해 출력된.. sizeof값을..

흠..(머리가 않좋아.. 보고 또 보고 또 보고했는데도.... 해답을못찾겟어서..)..

n은 sizeof(arr)/sizeof(int), 즉 10이므로, for(i=0; i<n; i++) 안에서는 i의 값이 0부터 n-1까지 변합니다. 안쪽 내용은 arr[i]를 sum에 더하는 거니까 arr[0]부터 arr[9]까지 모두 더하는 셈이고, 그럼 1+2+...+9+10 = 55가 나와야 겠죠.

혹시 계산을 잘못 하신 거라면 계산기를 써 보세요 :)

- 토끼군

min2to의 이미지

Quote:
1+2+...+9+10 = 55가 나와야 겠죠.

- 토끼군

여기서여.... 0부터 9까지 더하는데.. 어떻해 10이 나오나여.. 흑흑;;;
sum값도 0이고.. 0+0은.. 0이고..1부터 9까지 일테구... 흑흑...
혹시.. 위에 (arr,sizeof...,...) 에서..arr의 값이.. 10이라.. 10을 더한건가여?..
흑흑;;

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

fox9의 이미지

min2to wrote:
Quote:
1+2+...+9+10 = 55가 나와야 겠죠.

- 토끼군

여기서여.... 0부터 9까지 더하는데.. 어떻해 10이 나오나여.. 흑흑;;;
sum값도 0이고.. 0+0은.. 0이고..1부터 9까지 일테구... 흑흑...
혹시.. 위에 (arr,sizeof...,...) 에서..arr의 값이.. 10이라.. 10을 더한건가여?..
흑흑;;

0부터 9까지 더하는 것이 아니라 더하는 부분의 코드를 보면
sum+=pArr[i]
으로 되어있습니다.
즉 sum에다가 pArr[i]의 값을 더하는데

pArr[0]의 값은 1
pArr[1]의 값은 2
...
pArr[9]의 값은 10

이런식으로 되어있기 때문에 결국
1 + 2 + 3 + ... + 9 + 10
이 됩니다.
그래서 55가 되는 것이죠.
min2to의 이미지

4시간동안 낑낑 알다가.. 그냥 잠잤었는데.. 이제와서.. 보내여 흑흑;;
정말 감사,..

배열인건 알고 있었는데 흑흑 [0] 이.. 1부터 시작한다는걸
흐흐;; 깜빡;; 정말 감사감사.. ㅠ.ㅠ <-머저리.. 흑흑

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

cppig1995의 이미지

sizeof arr / sizeof arr[0] 을 쓰시면 좋습니다.
(포인터를 좀 아신다면 arr[0]을 *arr 로 짧게 쓰셔도 될 겁니다.
전 단지 좀 더 쉬운 이해를 위해서 말이죠.)

arr이 int형 배열이니까 arr의 첫째요소 arr[0] 은 당연히 int 겠죠.
arr이 double형 배열이 되어도 첫째요소 arr[0] 은 double이 되니까 알아서 잘 계산되겠죠.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.