| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1799 人关注过本帖
标题:c语言问题,不明白其中的区别
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
一切都要用代码來说话

DO IT YOURSELF !
2017-03-24 21:18
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:8 
回复 5楼 是2014
最好的情况是不能过编译。

因为你说的东西明显是错误的。

strcpy(b,a[0]),是将a[0]这个字符串复制到b数组。
b = a[0]; 这是非法的。数组是不能直接复制的,当然在函数中,b退化成一根指针,所以你编译可以通过,原因在于编译器无法检测这种错误。
那么如果b真的是一个指针会发生什么?发生的事情是,赋值操作只在函数中有效,因为函数无法访问指针本身。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-24 21:27
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10565
专家分:43004
注 册:2014-5-20
收藏
得分:0 
以下是引用是2014在2017-3-24 17:47:10的发言:

如果这样的话b=a[0]是不是也对了,b是一个数组名称,而a[0]也是啊(我是新手,可能问题有点弱智,您见谅啊)

void fun(char a[M][N], char *b)
这个函数里,b只是一个指针变量,不是数组名称。
虽然传入的是指向函数外部的数组(a[100]),但在函数里也可以指东指西。
如:
#include <stdio.h>
void fun(char a[][10], char *b)
{
    printf("%s\n", b);
    b = a[0];
    printf("%s\n", b);
    b = a[1];
    printf("%s\n", b);
}
main()     
{   
    char w[2][10]={"ABCD","1234"};
    char a[100]="987654321";
    fun(w, a);
}
2017-03-24 22:32
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 13楼 吹水佬
明白了大神,谢谢啊
2017-03-25 12:55
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 12楼 renkejun1942
明白了,谢谢大神
2017-03-25 12:56
快速回复:c语言问题,不明白其中的区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014012 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved