배열을 함수에 전달할 때 &
을 사용해야합니까?문자 배열을 함수에 전달
아래 사례 1 또는 사례 2 중에서 어느 것이 좋습니까?
#define IP_ADDR_LEN 4
char ip[4]={192,168,205,1};
char PeerIP[4];
int main()
{
memcpy(PeerIP,ip,IP_ADDR_LEN)
testip(PeerIP); /* Case 1 */
testip(&PeerIP); /*Case 2*/
}
int testip(char *ip)
{
/* IP check */
}
호출하기 전에'testip()'을 선언 (또는 정의)해야한다는 것에주의하십시오. 그렇게하면, 컴파일러는'testip (& PeerIP);'호출이 함수에 잘못된 타입을 넘겨주고 있다고 말할 수 있습니다. 그것은'int *'가 아니라'int (*) [4] '입니다. 그것이 통과되고있다. 엄격한 프로토 타입을 사용하여 컴파일러가 사용되기 전에 정의되거나 선언 된 함수를 주장하고 사용하는 방법을 알아보십시오. –