#include<stdio.h>
int add (int a, int b);
void add_array (int * a1, int * b1, int ** c1);
void main()
{
int a, b, c;
int a1[3] = {1, 2, 3};
int b1[3] = { 4, 5, 6};
int c1[3];
add_array(a1, b1, &c1 );
// a1[0] = 1; a1[1] = 2; a1[2] = 3;
a = 3;
b = 4;
c = add(a,b);
printf ("the value of c is %d\n", c);
getchar ();
}
int add (int a, int b)
{
return a + b;
}
void add_array (int * a1, int * b1, int ** c1)
{
*(*c1 +0) = a1[0] + b1[0]; // *(c1+0)
*(*c1+1) = a1[1] + b1[1];
*(*c1+2) = a1[2] + b1[2];
}
error C2440: '=' : 'int'에서 'int *'(으)로 변환할 수 없습니다.
1>정수 계열 형식에서 포인터 형식으로 변환하려면 reinterpret_cast, C 스타일 캐스트 또는 함수 스타일 캐스트가 필요합니다.
이거 오류뜨는이유가 뭐에요?
(*c1)[3] 으로하면 되던데 **c1은 왜 안되나요?
배열의 포인터와 이중 포인터는 다르기 때문입니다.
int c1[3]; 과 같이 있는 배열에서 &c1; 처럼 할 경우 c1[3] 자체를 포함하고 있는 2차원 배열이 있다고 상정하고 그 배열 안의 첫번째 원소의 포인터가 돼요. 즉 배열 자체의 포인터가 되어 버림.
&c1; 에서 ;는 없는 거. 디씨 댓글에서 자동으로 붙네요.
아하 답변 갑사합니다.