2 lishangzcq lishangzcq 于 2014.09.10 11:33 提问

关于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: 不允许使用返回数组的函数

1个回答

lishangzcq
lishangzcq   2014.09.10 14:38

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

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[]数组未初始化和未定义

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
老生常谈extern数组与extern指针
见了皓哥http://coolshell.cn/articles/945.html/comment-page-3#comment-510465中的第五题: //file1.c int arr[80]; //file2.c extern int *arr; int main() { arr[1] = 100; printf("%d\n", arr[1]);
extern char *a与extern char a[]
《C陷阱与缺陷》提到要特别注意extern char *a与extern char a[]之间的区别。所以特意测试了一下。测试环境VC6 b.cpp char *a="ABCDEF"; char b[]="ABCDEF";第一种情况:主文件中声明 extern char a[]; extern char b[]; #include extern char a[]
extern char **environ;
每个程序都有一个环境表,它是一个字符指针数组,其中每个指针包含一个以NULL结尾的C字符串的地址。全局变量environ则包含了该指针数组的地址: extern char **environ; 简单打印环境变量表: #include extern char **environ; int main() { int i; for(i = 0; *environ[i]; i++)
extern char**environ的介绍
  有如下这么一段程序: #include extern char**environ; int main () { char**var; for (var =environ;*var !=NULL;++var) printf ("%s /n ",*var); return
char arr[] 和 char *arr区别
char arr[] = "hello world";//arr为数组的名称,数组中的内容在栈中, 出去数组所在的作用域,所占用的空间就被释放。 char *arr = "hello world";//arr为指针,arr占用的内存为栈中的内存, 但其指向的内存在静态存储区,静态存储区的空间在程序结束的时候,才被释放。 下面是一个小的程序,GetString01() 和Ge
ios 开发使用 extern "C" __declspec(dllimport) 导致 unknown type name "__declspec"
iOS 开发导入c++ 文件 使用extern "C" __declspec(dllimport) 导致 unknown type name "__declspec" 字节方法,删除这个部分,ios不需要这个部分
IOS-objectiveC【语法】修饰符 static extern const
objectiveC【语法】修饰符 static extern const const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变。 NSString * const pt1; II 指向常量的指针 // 初始化之后可以赋值,即指向别的常
extern __shared__
http://blog.csdn.net/openhero/article/details/3890578 首先是讲一下shared的memory的两种使用方法,然后讲解一下shared memory的bank conflict的问题,这个是shared memory访问能否高效的问题所在; Shared memory的常规使用: 1. 使用固定大小的数组: /************
strstr与strchar用法
原型:extern char *strstr(char *haystack, char *needle);            用法:#include       功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。      说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 #include #include
extern char s[100]与extern char *s 的使用区别
《C陷阱与缺陷》一书3.3节有相关的问题,这里对此解释如下:   在x.c中定义了一个字符数组 char s[100], 在l.c中进行引用extern char s[200], 有些c程序新手经常把它写成extern char *s。 这两种写法的含义一样吗? 首先得理解声明与定义的含义: 定义一个变量意味着要给它进行内存分配, 而声明一个变量则可以在其他文件中, 只是进行一种声明