在一本书上看到的 foo(const char **p){}
.......
main(int argc,char **argv)
{
.....;
foo(argv);
}
编译时发出警告
char *与const char *是相容的 char *p;
const char *cp;
cp=p;
但是 p=cp的话就不行;
但是为什么? const char ** qp;
char **qqp;
qp=qqp; 就不行呢?
[此贴子已经被作者于2006-7-21 13:26:18编辑过]
----------------解决方案--------------------------------------------------------
C编程专家?
为什么不继续往下看呢..下面说的很明白!
最后的一个问题是废话?
既然你知道P=CP不可以.
那么.当然的 qp=qqp也是不可以的
----------------解决方案--------------------------------------------------------
是这本书,我理解不了他说的相容不能传递,既然*qp=*qqp可以 怎么 qp=qqp不行 在二级指针const修饰的是char么?还是char *? 我的理解是如果修饰的是char 那么就是值不能被改变,地址是可以的,一级地址*qp可以,那么二级地址qp应该也可以,如果是char*那么就和第一种情况一样 我那里错了,烦请指教谢谢(我说的一级地址*qp 二级地址qp可能有问题,可能说反了,因为不确定说法,要是错了,请指出)
[此贴子已经被作者于2006-7-22 13:20:08编辑过]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main()
{
char p='a';
char *p1=&p;
int q=5;
int *q1=&q;
q=p;
p=q;
*q1=*p1;
*p1=*q1;
q1=p1;
p1=q1;
}
去测试下这段代码..按你的理解..是不是p1=q1或者q1=p1也是应该相容的?
----------------解决方案--------------------------------------------------------
哦~:)懂了,谢谢斑竹
----------------解决方案--------------------------------------------------------
char *与const char *是相容的
char *p;
const char *cp;
cp=p;
老大我有点不明白啊 cp和p都是char型指针啊 const只是个修饰作用 他们都是同一类型的指针为什么不可以呢?
#include<stdio.h>
int main()
{
char p='a';
char *p1=&p;
int q=5;
int *q1=&q;
q=p;
p=q;
*q1=*p1;
*p1=*q1;
q1=p1;
p1=q1;
}
这个例子中p1和q1是不同类型指针要强制转换后才能赋值啊?这两个是不同的吧
----------------解决方案--------------------------------------------------------
char *p;
const char *cp;
cp=p; //可以
p=cp //不可以
因为 char(无限制) 包括 const char的限定..所以 可以赋值,也就是说 char包括了const
而 const char 并没有 char的限定..所以 不可以赋值,也就是说const是只读 他不可写.而char是可写的.你不可以把可写的类型赐赋给不可写的类型.所以这是错误的
----------------解决方案--------------------------------------------------------
这两个是不同的吧
我这个例子是解释的 **qp与**qqp为什么不能相互赋值(地址值)
----------------解决方案--------------------------------------------------------
eeeeeeee 原来是这样啊 明白了 谢谢~~~~~
----------------解决方案--------------------------------------------------------