C语言数组和指针的变换,求大神解决

qq_41093250 2017-11-17 08:55:57
char *tmp = str[i];
str[i]不是相当于是值吗,指针的初始化不应该是char*tmp=&str[i]吗。求解决一下
...全文
184 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-11-18
  • 打赏
  • 举报
回复
建议提供一下str的定义。因为改表达式应该怎么赋值,是&str[i],还是str[i]跟str的类型有很大关系; 若str是字符类型的指针数组,那么这样赋值char *tmp = str[i];是没问题的。 若str是字符数组,那么需要char *tmp = &str[i]; 或char *tmp = str + i;
Intel0011 2017-11-18
  • 打赏
  • 举报
回复
引用 4 楼 qq_41093250 的回复:
[quote=引用 2 楼 Intel0011 的回复:] 如果定义char *str[10]; 则char *tmp = str[i]; OK 如果定义char str[10]; 则char *tmp = &str[i]; OK
能不能详细说一下为啥啊[/quote] 如果定义char *str[10]; 则str数组有10个元素,每个元素的类型是char *,所以str[i]的类型也是char * 因此char *tmp = str[i];可以通过编译,类型相同 如果定义char str[10]; 则str数组有10个元素,每个元素的类型是char,所以str[i]的类型也是char 因此char tmp = str[i];可以通过编译,类型相同 教程的基本概念而已,加油
qq_41093250 2017-11-17
  • 打赏
  • 举报
回复
引用 2 楼 Intel0011 的回复:
如果定义char *str[10]; 则char *tmp = str[i]; OK 如果定义char str[10]; 则char *tmp = &str[i]; OK
能不能详细说一下为啥啊
mk112255 2017-11-17
  • 打赏
  • 举报
回复
char *tmp = str[i];是相当于直接指针的初始化值 如果是:char *tmp; //声明变量是指针变量 tmp=&str[i] //初始化指针的,指针的内容为地址,所以赋值为地址
Intel0011 2017-11-17
  • 打赏
  • 举报
回复
如果定义char *str[10]; 则char *tmp = str[i]; OK 如果定义char str[10]; 则char *tmp = &str[i]; OK
qq_35875027 2017-11-17
  • 打赏
  • 举报
回复
str[i]的类型是char*指针,不然编译不通过的

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧