关于extern char *arr[];编译报错的问题

#include
#include

extern char *arr[];//在这行报错
int main(){

int i=0;
while(arr[i++])
    printf("%s\n",arr[i]);
system ("pause");
return 0;

}
用VS2010编译这段代码时报错:
IntelliSense: 不允许使用返回数组的函数

通过论坛求助,编译已不再报错,以下为修改后代码:

extern char *arr[];
int main(){
    int i=0;
    while(arr[i++])
        printf("%s\n",arr[i]);
    system ("pause");
    return 0;
}
#include <stddef.h> 
char *arr[4] = {
    "1",
    "2",
    "3",
    NULL
};

问题中之所以报错,是因为arr[]数组未初始化和未定义