목표 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.length
C. 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.length
C. 이것이 많은 함수들이 인수 쌍을 취하는 이유입니다. 하나는 배열로, 하나는 배열로, 그리고 하나는 배열의 길이로.가장 확실한 경우는 메인 기능입니다.이 기능은 이름이 붙은 파일에서 모든 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;
}
그 방법을 주목하세요.argv
agment는 벡터 또는 문자열의 배열입니다. 그리고argc
인수는 이 배열에 있는 항목의 개수입니다.
모든 원시 유형에 대해 동일한 작업을 수행해야 합니다. 이 작업은 Objective-C의 C 부분입니다.NSray 또는 하위 클래스를 사용하여 Objective(객관적) 부분에 머무르면 정상적으로 작동하지만 모든 요소가 객체가 되어야 합니다.
을 위한 일처럼 보입니다.NSMutableArray
만약 , . C 어레이를 사용해 보세요. 그렇지 않다면 고려해 보십시오.NSMutableArray
.
제가 틀릴 수도 있지만(그러면 수정해주세요), C에서는 런타임에 int[]의 크기를 얻을 수 있는 쉬운 방법이 없습니다.배열을 유지할 구조를 만들고 배열에 있는 항목의 수를 직접 추적할 수 있는 int와 같은 작업을 수행해야 합니다.
더 멋진 것은 당신의 구조가 당신의 배열과 블록을 유지하도록 만들 수 있습니다.그러면 당신은 당신을 위해 추적을 할 블록을 설계할 수 있습니다.
이것은 객관적 질문이 아니라 C 질문입니다.
정수 배열을 원하는 경우 NSNumber 개체로 감싸고 NSray에 배치합니다.
당신이 요구하는 것은, 당신이 시도할 수 있는 mac의 방법이 있지만, C에서는 실제로 잘 지원되지 않습니다(malloc_size).
다음 방법을 시도해야 합니다.
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
'programing' 카테고리의 다른 글
(x < 0)과 (x == -1) 중 어느 것이 더 빠릅니까? (0) | 2023.09.08 |
---|---|
워크시트의 "마지막" 셀 강제 새로 고침 (0) | 2023.09.08 |
Spring Data에서 동일한 QueryDSL 경로에 대해 여러 개 (0) | 2023.09.08 |
YamlPropertiesFactoryBean을 사용하여 Spring Framework 4.1을 사용하여 YAML 파일을 로드하는 방법은 무엇입니까? (0) | 2023.09.08 |
경고: CSRF 토큰 인증 레일을 확인할 수 없습니다. (0) | 2023.09.08 |