----------------解决方案--------------------------------------------------------
你能不能说说理由呢?
我上面是说了根据的啊
根据:
在有些严格的编译器,比如TC类,
你这样是非法的:
char ch[2][3]={'a','b','c','d','e','f'};
char *p=ch; //会警告 如果指针能指向数组,这里就不会警告。之所以有很多人误以为可以指向数组。主要是因为有些编译器(比如,VC等)不严格,或者说自动帮你转换成了指向相应的第一元素了。。可以多试试一些编译器,就会得到验证。
规范的是:char *p=ch[0];
[此贴子已经被作者于2006-7-14 15:36:40编辑过]
----------------解决方案--------------------------------------------------------
[QUOTE]int (*p)();
p=func;
这种情况,C语言并没有给他加上什么帽子,就是没有给他什么类型了。看他前面就是一个*号,
前面的int 可不是他的类型,而是函数的类型。[/QUOTE]
同理
int (*p);
C语言并没有给他加上什么帽子,就是没有给他什么类型了。看他前面就是一个*号,
前面的int 可不是他的类型,而是数据的类型
----------------解决方案--------------------------------------------------------
以下是引用grub2linux在2006-7-14 15:31:07的发言:
你能不能说说理由呢?
我上面是说了根据的啊
你能不能说说理由呢?
我上面是说了根据的啊
int a[3][5]={...};
int (*p)[5]=a;
----------------解决方案--------------------------------------------------------
int a[3][5]={...};
int (*p)[5]=a;
这在TC系列中是会警告的: suspicios pointer conversion 可疑的指针转换
在VC等不严格遵守C规范的编译器就没警告。。
----------------解决方案--------------------------------------------------------
以下是引用grub2linux在2006-7-14 15:31:07的发言:
你能不能说说理由呢?
我上面是说了根据的啊
根据:
在有些严格的编译器,比如TC类,
你这样是非法的:
char ch[2][3]={'a','b','c','d','e','f'};
char *p=ch; //会警告 如果指针能指向数组,这里就不会警告。之所以有很多人误以为可以指向数组。主要是因为有些编译器(比如,VC等)不严格,或者说自动帮你转换成了指向相应的第一元素了。。可以多试试一些编译器,就会得到验证。
规范的是:char *p=ch[0];
你能不能说说理由呢?
我上面是说了根据的啊
根据:
在有些严格的编译器,比如TC类,
你这样是非法的:
char ch[2][3]={'a','b','c','d','e','f'};
char *p=ch; //会警告 如果指针能指向数组,这里就不会警告。之所以有很多人误以为可以指向数组。主要是因为有些编译器(比如,VC等)不严格,或者说自动帮你转换成了指向相应的第一元素了。。可以多试试一些编译器,就会得到验证。
规范的是:char *p=ch[0];
再更正一点,TC比VC宽松,我是第一次听说TC比VC严格
TC用的是C89标准,VC应该是用C99吧?估计是,我用BCB不用VC
----------------解决方案--------------------------------------------------------
TO baidu 大斑竹:
你怎么把 我说的 int (*p)() 说成 int (*p) 了?
这是两回事啊!
----------------解决方案--------------------------------------------------------
以下是引用grub2linux在2006-7-14 15:42:06的发言:
int a[3][5]={...};
int (*p)[5]=a;
这在TC系列中是会警告的: suspicios pointer conversion 可疑的指针转换
在VC等不严格遵守C规范的编译器就没警告。。
你测试过了?
----------------解决方案--------------------------------------------------------
以下是引用grub2linux在2006-7-14 15:44:24的发言:
TO baidu 大斑竹:
你怎么把 我说的 int (*p)() 说成 int (*p) 了?
这是两回事啊!
TO baidu 大斑竹:
你怎么把 我说的 int (*p)() 说成 int (*p) 了?
这是两回事啊!
看清楚我要表达的意思
----------------解决方案--------------------------------------------------------