배열 1000개짜리에 다섯군데에만 숫자를 넣고 나머지는 널문자로 처리해서
널문자가 아닌 갯수를 세려고 합니다. (실행하면 5)
이렇게 코딩을해서 돌리면 경고가 뜨고 실행은 999 가 되네요..
어디가 잘못되었을까요?
#include <stdio.h>
#define MAX 1000
int getSize(int *a)
{
int i;
int j=0;
for(i=0;i<MAX;i++)
{
if((a+i)!=NULL) j++;
}
return j;
}
void main()
{
int tree[MAX]={0};
int c;
*(tree+1)=1; // *(tree+(2^0)+0)=1;
*(tree+3)=2; // *(tree+(2^1)+1)=2;
*(tree+4)=3; // *(tree+(2^1)+2)=3;
*(tree+9)=4; // *(tree+(2^2)+5)=4;
*(tree+20)=5; // *(tree+(2^3)+12)=5;
c=getSize(*tree); // 트리에 속한 총 노드의 수 (이부분)
printf("Tree Size ( # of nodes in the tree) value: %dn",c);
}
괄호에 이부분이라 적혀진 부분에 경고가뜨네요..
warning C4047: '함수' : 'int *'의 간접 참조 수준이 'int'과(와) 다릅니다.
warning C4024: 'getSize' : 형식 및 실제 매개 변수 1의 형식이 서로 다릅니다.