鱼C论坛

 找回密码
 立即注册
查看: 4777|回复: 5

C赋值语句问题

[复制链接]
发表于 2013-2-9 13:34:05 | 显示全部楼层 |阅读模式
5鱼币
char a[5],*p=a;
已知p="abcd";是正确的
为什么 a="abcd";不对?

最佳答案

查看完整内容

类型不匹配 char a[5],*p=a; //声明了一个char数组a,和一个指向char类型的指针p 已知p="abcd";是正确的 //"abcd"存放在内存中的某个地址,这句就是将"abcd"的地址赋值给p,类型相同,可以赋值 为什么 a="abcd";不对? //a是一个数组,而"abcd"代表其在内存中的地址(即指针),指针和数组类型不一样,因此无法赋值
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-2-9 13:34:06 | 显示全部楼层
本帖最后由 half-life 于 2013-2-9 18:14 编辑

类型不匹配 char a[5],*p=a;                         //声明了一个char数组a,和一个指向char类型的指针p
    已知p="abcd";是正确的              //"abcd"存放在内存中的某个地址,这句就是将"abcd"的地址赋值给p,类型相同,可以赋值
    为什么 a="abcd";不对?             //a是一个数组,而"abcd"代表其在内存中的地址(即指针),指针和数组类型不一样,因此无法赋值

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-9 13:56:03 | 显示全部楼层
其实你两个都是错误的写法 还有你没搞清楚赋值和初始化还有数组头和普通指针的区别
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-9 14:17:56 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-9 16:05:29 | 显示全部楼层
首先你看另一个例子:
int a;
a = 5;//正确
5 = a;//错误
以上错误原因是5为常量,不是变量,不能放在赋值符号左边。

接着看你的例子
char a[5];
a = ...;
不管右边是什么都是错的,因为左边是常量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-9 18:17:23 | 显示全部楼层
可以使用strcpy(a,p)来给a赋值"abcd"
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-8 10:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表