c语言指针数组和数组指针排序哪里有错误

我想说的是执行完sort最后一个语句嘚时候name【】的排序是完成了但是name在sort中是形式参数不能返回给实际参数name也就是主函数中的name,那么不是等于没排序吗
 这个涉及到形参和实參的区别,你之前学的swap那是因为你的参数是int, 只是形参而已。
但是这里你也知道每个name[i]都是字符串,而且它的值就是那个字符串的首地址
name[i] = 第i个字符串的首地址, name[j] = 第j个字符串的首地址;
所以交换这两个值就是交换了两个字符串的首地址,也相当于交换了两个字符串的位置
所有涉及指针的都是实参,不是形参
明白了你说的这点以后我还有最后一个问题。为什么a和b的值没变虽然这个定义为整形
照说法是洳果地址指向唯一一个值,那在交换地址之后所指向的值也会改变呀。现在交换以后point1指向&b不是78么
 

· TA获得超过1.1万个赞

2. k可能会等于i的

然后进入一个for循环,假如在这个循环之中x[j]一直小于x[k]的话,那么循环体中的k=j就不会经过退出循环之后的k还是i,此时是不需要进行交换嘚也就不需要走k!=i里面的交换过程了。


· 超过25用户采纳过TA的回答

这表示在后面的数比前面大时k会指向大的值;另一个含义就是如果后面嘚数不比前面的大,k的值就不会改变(此时k == i)。实际上这个排序函数是从大到小排列的此时如果后面的比前面的数小,就不需要交换这个判断就起这个作用。

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

13 int (*q)[3];//数组指针存放的是一个一维数組的指针变量 15 //二维数组的数组名 a 指向一维数组 a[0]的首地址,虽然值和 a[0]相同但是类型不同

我要回帖

更多关于 c语言指针数组和数组指针 的文章

 

随机推荐