目标c中的近初始化错误

时间:2015-04-09 09:43:45

标签: objective-c macos

为什么我会:

  

此错误控制到达非空函数的末尾[-Wreturn-type]

#import <Foundation/Foundation.h>
const int MAX = 4;

int main (int argc, const char * argv[])
{
   char names[] = {
                   "Zara Ali",
                   "Hina Ali",
                   "Nuha Ali",
                   "Sara Ali",};
    char *pointer[MAX];
    for(int i=0; i<MAX; i++)
    {
        pointer[i] = &names[i];
    }
    for (i = 0; i < MAX; i++)
    {
       NSLog(@"Value of var[%d] = %s\n", i, *pointer[i] );
    }
   return 0;
}

1 个答案:

答案 0 :(得分:0)

字符向量与字符串向量不同。 char只有一个字符的空间。 char[]是字符向量,而不是字符串向量。如果你这样初始化它:

char names[] = {
    "Zara Ali",
    "Hina Ali",
    "Nuha Ali",
    "Sara Ali",};

names变量将指针保持在第一个字符串中,它将仅使用第一个字符串进行初始化。所有下一个字符串都将被忽略。

我认为你正在尝试做这样的事情:

#import <Foundation/Foundation.h>
const int MAX = 4;

int main (int argc, const char * argv[])
{
    NSString *names[] = {
        @"Zara Ali",
        @"Hina Ali",
        @"Nuha Ali",
        @"Sara Ali",};
    NSString *pointer[MAX];
    for(int i=0; i<MAX; i++)
    {
        pointer[i] = names[i];
    }
    for (int i = 0; i < MAX; i++)
    {
        NSLog(@"Value of var[%d] = %@\n", i, pointer[i] );
    }
    return 0;
}