, 난 당신이 실수를하고있다 생각한다.
하나는 당신이 배열에 대한 포인터가이 목적으로 생각한다는 것입니다. 그러나 대괄호 []
은 별표 *
보다 식별자 식별자 myArray
에 더 긴밀하게 바인딩됩니다. 그래서 매개 변수는 long
에 대한 포인터의 배열 인 long *(myArray[])
입니다,하지만 난 당신이 long (*myArray)[]
것 long
의 배열에 대한 포인터를위한 생각합니다.
실제로이 매개 변수를 사용하여 함수를 선언하고 myFunction1(&myArray)
처럼 배열에 대한 포인터를 전달하고 (*myArray)[0] = 1;
과 같이 함수 내부에서 포인터를 사용할 수 있습니다.
그러나, C는 우리에게 바로 가기를 제공하고, 그것을 사용하지 않는 것은 두 번째 실수입니다. 당신이 long myArray[]
로 매개 변수를 선언하면, 그것은 배열처럼 보이지만 실제로 long
에 대한 포인터입니다 long *myArray
로 변환됩니다.그런 다음 배열을 myFunction1(myArray)
으로 전달할 수 있습니다. myArray
은 배열이지만 C는이를 첫 번째 요소에 대한 포인터로 변환합니다. 따라서 인수 myArray
은 long myArray[]
과 일치합니다. 그런 다음 함수 내부에서 myArray[0] = 1;
과 함께 포인터를 사용할 수 있습니다.
바로 가기를 사용하면 표기법이 더 짧아지고 일반적으로 자연 표기법으로 간주되므로 선호됩니다.
아니요, 정확하지 않습니다. 함수 매개 변수를'long myArray []'로 변경하고 별표없이 값을 지정하십시오. –
log * array []는 다차원 배열 일 수 있으며, 배열은 포인터입니다. * myarray [1] = 2는 요소를 역 참조하여 하위 요소에 액세스하는 것과 같습니다. * myarray [1] = myarray [0] [1] – Lefsler
왜 테스트를 해보고 작동하는지 확인하십시오. –