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

这两句有什麽区別?该如何处理

2012-03-01 
这两句有什麽区別?1:char*cmdset 2:charcmd[]set [解决办法]数组cmd中的内容可变,但是地址始终不变

这两句有什麽区別?
1:
char   *cmd   =   "set ";
2:
char   cmd[]   =   "set "

[解决办法]
数组cmd中的内容可变,但是地址始终不变;
指针cmd中的内容是不可变(即不能被修改是,是常量),但地址可变;

[解决办法]
帮顶
[解决办法]
第一个:
const char *cmd= "set ";

第二个:
char * const cmd= "set "
[解决办法]
1.char *cmd,cmd是指针变量,因此它还可以再被赋值指向其他的字符指针,比如在初始化后再赋值cmd= "get ";
2.char cmd[],cmd实际上是指针常量,就是字符串第一个字符的地址。因此它不能再被赋予其他值,它最大的作用方便引用数组元素,利用它来对数组进行操作。

在这样定义的情况下,两者都可以对所指向的内容进行修改(只要数组引用不越界)。如果第一个定义为const char *cmd,那么cmd所指向的内容才不可变。
[解决办法]
1:
char *cmd = "set ";

cmd为一个指针,指向一个固定地址,这个地址中数据是set并且不可修改的

2:
char cmd[] = "set "
这里cmd是一个数组,里面存放4个字节set和结束符号
可以被修改
[解决办法]
tc运行在dos实模式下
而vc在windows的保护模式下 当然不一样

热点排行