如果在参数表中,int
创新互联专注为客户提供全方位的互联网综合服务,包含不限于做网站、网站建设、东兴网络推广、小程序制作、东兴网络营销、东兴企业策划、东兴品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供东兴建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
[],实际会被转换成int
*。不信你可以试试这个程序:
#include
stdio.h
void
f(int
b[10]){
printf("%d\n",sizeof(b));
}
void
main(){
int
a[10];
printf("%d\n",sizeof(a));
f(a);
}
至于为什么,就是为了防止传递数组,C认为有一个原始的,就操作它好了,如果你觉得要另立副本,就自己新分配内存,或者用自己auto分配的内存,将内容复制过来。当然C++的今天,你可以用引用或者对象复制,来强行真正去传整个数组。
不能说简单类型传值,数组只传首地址指针就不好,现在很多语言还都传引用,但是真正需要副本时,要想办法,否则可能出现功能问题。
while((*str=*str1)!=NULL);//无限的把str1的头地址元素'a'赋予str的头地址,是一个死循环
//下面的执行不了,不过也是错的
while((*str1=*str2)!=NULL);
while((*str2=*str)!=NULL);
第一选择题是;在swp()函数中 t没有定义!就使用了!所以上面所得都不对!
第二个选择题是:如果有错应该是函数定义的错吧
strcpy(p1,p2);(交换两字符串的位置)(2楼那位写反了);
swp(str1,str2);(如果满足if语句,调用swp()函数,交换str1和str2的位置);
swp(str1,str3);(如果满足if语句,调用swp()函数,交换str1和str3的位置);
swp(str2,str3);(如果满足if语句,调用swp()函数,交换str2和str3的位置);