programing

목표 C에서 'int' 배열의 길이

abcjava 2023. 9. 8. 21:04
반응형

목표 C에서 'int' 배열의 길이

함수에 정수 배열을 전달합니다.다음으로 배열을 통과합니다.C와 C++에서 이것은 단순히 다음을 사용함으로써 작동했습니다.arrayname.length배열된 요소의 수를 제공했습니다.목표-C에서 그것을 찾을 수 있는 방법은 무엇입니까?

[NSArrayObject length]일을 하는NSArray타이프 하지만 나는 그것을 원합니다.int[]. 심지어는[XYZ count](이미 제안된 답변) 그래서 여기서 다른 방법을 찾고 있습니다.

[XYZ count]를 사용하여 배열의 길이를 얻을 수 있습니다.

Int들의 배열로 Objective-C에 특정한 것은 없습니다.당신은 마치 C를 사용하는 것과 같은 기술을 사용할 것입니다.

sz = (sizeof foo) / (sizeof foo[0]);

다음과 같은 것은 없습니다.array.lengthC. Objective-C의 int 배열은 C의 int 배열과 정확히 같습니다.다음과 같이 정적으로 정의되어 있다면,int foo[5], 그러면 할 수 있습니다.sizeof(foo)크기를 구하다 - 그러나 동일한 기능에서만.foo에서 정의됩니다(다른 함수에는 배열 자체가 아니라 int 포인터일 뿐입니다).그렇지 않으면 이 정보를 얻을 수 있는 본질적인 방법이 없습니다.크기를 전달하거나 보초 값을 사용해야 합니다(단, char 배열인 C 문자열의 종결 '\0'과 같이).

[array count] 이는 objective-c에서 가장 쉽게 작동하는 것으로 보입니다.

어? C에는 arrayname.length라는 게 없습니다.다음과 같은 원시 유형의 배열.int[], 런타임에 연관된 길이 정보가 없습니다.

배열에 있는 요소의 총 개수를 알 수 없을 때 이 코드를 사용할 수 있습니다.

main()
{
    int a[]={1,2,3,4,5,6,7}
    int i;
    clrscr();
    for (i=0;i<=((sizeof(a)/sizeof(int));i++)
    {
        puts(a[i]);
    }
    getch();
}

다음과 같은 것은 없습니다.arrayname.lengthC. 이것이 많은 함수들이 인수 쌍을 취하는 이유입니다. 하나는 배열로, 하나는 배열로, 그리고 하나는 배열의 길이로.가장 확실한 경우는 메인 기능입니다.이 기능은 이름이 붙은 파일에서 모든 iPhone 프로젝트임을 알 수 있습니다.main.m, 다음과 같이 보일 것입니다.

int main(int argc, char *argv[]) {    
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  int retVal = UIApplicationMain(argc, argv, nil, nil);
  [pool release];
  return retVal;
}

그 방법을 주목하세요.argvagment는 벡터 또는 문자열의 배열입니다. 그리고argc인수는 이 배열에 있는 항목의 개수입니다.

모든 원시 유형에 대해 동일한 작업을 수행해야 합니다. 이 작업은 Objective-C의 C 부분입니다.NSray 또는 하위 클래스를 사용하여 Objective(객관적) 부분에 머무르면 정상적으로 작동하지만 모든 요소가 객체가 되어야 합니다.

을 위한 일처럼 보입니다.NSMutableArray 만약 , . C 어레이를 사용해 보세요. 그렇지 않다면 고려해 보십시오.NSMutableArray.

제가 틀릴 수도 있지만(그러면 수정해주세요), C에서는 런타임에 int[]의 크기를 얻을 수 있는 쉬운 방법이 없습니다.배열을 유지할 구조를 만들고 배열에 있는 항목의 수를 직접 추적할 수 있는 int와 같은 작업을 수행해야 합니다.

더 멋진 것은 당신의 구조가 당신의 배열과 블록을 유지하도록 만들 수 있습니다.그러면 당신은 당신을 위해 추적을 할 블록을 설계할 수 있습니다.

이것은 객관적 질문이 아니라 C 질문입니다.

정수 배열을 원하는 경우 NSNumber 개체로 감싸고 NSray에 배치합니다.

당신이 요구하는 것은, 당신이 시도할 수 있는 mac의 방법이 있지만, C에서는 실제로 잘 지원되지 않습니다(malloc_size).

c에서 동적으로 할당된 메모리의 크기 결정

다음 방법을 시도해야 합니다.

float ptArray[] = {97.8, 92.3, 89.4, 85.7, 81.0, 73.4, 53.0, 42.3, 29.4, 14.1};

int x = sizeof(ptArray)/sizeof(ptArray[0]);

 NSLog(@"array count = %d", x);

출력:

array count = 10

언급URL : https://stackoverflow.com/questions/1530050/length-of-an-int-array-in-objective-c

반응형