首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于 const char *net_addr_array[256] 这个数组的初始化有关问题

2012-04-12 
关于 const char *net_addr_array[256] 这个数组的初始化问题初始化成下面这样不正确:必须初始化成下面这

关于 const char *net_addr_array[256] 这个数组的初始化问题
初始化成下面这样不正确:
必须初始化成下面这样:

C/C++ code
const char *net_addr_array[256]=    {        "192.168.1.128/255.255.255.192",        "192.168.1.0/255.255.255.0",        "192.168.1.64/255.255.255.192",        "0.0.0.0/0.0.0.0"    };

必须初始化成下面这样。。。为什么非得加上 "" ?不加的话不行?类似这样的数组的初始化都是这么处理的吗?

C/C++ code
const char *net_addr_array[256]=    {        "192.168.1.128/255.255.255.192",        "192.168.1.0/255.255.255.0",        "192.168.1.64/255.255.255.192",        "0.0.0.0/0.0.0.0",        ""    };


[解决办法]
不加""编译器怎么会认为那个是字符串呢
[解决办法]
/* 你也可以这样 */
const char *net_addr_array[256]=
{

{'1', '9', '2', '.', '1', '6', '8', '.', '1', '.', '1' ,'2' ,'8' ,'/', '2', '5', '5', '.', '2', '5', '5', '.', '2', '5', '5', '.', '1', '9', '2'},

/* 其他同 */

};
[解决办法]
为什么第一种初始化不行?谁说的?

2种初始化的区别不过是net_addr_array[4]一个为NULL 一个指向"" 其他还有啥区别?
[解决办法]
字符串必须加双引号,字符必须加单引号,否则编译器会把它当成是参数,会报错说“你使用了未定义参数”
[解决办法]
开玩笑呐 居然会报错?啥时候编译器这么猛了?笑死我也!!!!
[解决办法]
未初始化???你说了算???笑死我了
[解决办法]
你用的啥编译器,我gcc怎么没有问题。
[解决办法]
LZ,我在linux上用gcc编译,两种写法都是一样的,编译都没错误,
还有,我个人的理解是:你的第一种写法
const char *net_addr_array[256]=
{

"192.168.1.128/255.255.255.192",

"192.168.1.0/255.255.255.0",

"192.168.1.64/255.255.255.192",

"0.0.0.0/0.0.0.0"

};
const char *net_addr_array[256]表示的是有256个字符串,而你右边的括号只有四个字符串,所以有的编译器如果不够智能,他不知道你右边有多少个字符串,所以就报错了
但是你如果加入一个""的字符串,编译器就以为你的字符串已经结束了,所以就没报错,为了验证这个结论,你可以在"",后面再加入一个字符串,比如"test...",然后你测试一下编译器会不会忽略掉这个字符串

呵呵,纯属个人见解,没测试过,看过楼主的很多帖子,写得很不错,顶一下!!!

热点排行