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

qq_41093250 2017-11-17 08:55:57
char *tmp = str[i];
str[i]不是相当于是值吗,指针的初始化不应该是char*tmp=&str[i]吗。求解决一下
...全文
120 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
自信男孩 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*指针,不然编译不通过的
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2017-11-17 08:55
社区公告
暂无公告