新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
void
你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事网站制作、做网站、企业网站建设、成都手机网站制作、网页设计、成都品牌网站建设、网页制作、做网站、建网站。创新互联公司拥有实力坚强的技术研发团队及素养的视觉设计专才。
swap(int*,int*)函数接受的是一个指针,就算你可以理解成它拷贝了值,是,它拷贝了x,y到*a,*b里了,但是,你没有发现,*a其实还是指向x吗?这样一交换,不就结了吗。
举个例子。
假设x的地址为0x0069857(乱编的),然后,传递进函数的时候,它只是传值,并没有传引用,然后呢,int
*a把0x0069857复制为自己的值。这样一来,还记得解引用吗?*(a)=*(0x0069857)=x,因此t=*a不是就可以翻译成t=x;
x=y;
y=t;
}
不是就交换了吗?????
在我的系统中运行你 的程序和你想的一样,是8不是7.
string 1,string 2:
it's a boy
boy
offset 8 "boy"in"it's a boy"
所谓指针就是地址,只是指针会区别它是什么指针,对应的数据占多大内存。如subst,str都是char*类型的,他们是字符指针,所以他们指向的类型是字符。*str和str[0]的含义是一样的,意思是取得首字符。在c语言中字符串就是用字符指针来表示的,对应的是“%s”,而加上了*,是取这个字符指针地址的内容,也就是一个字符,用“%c”表示。所以你打印的是字符串,就应该用%s。
指针实际就是实体的代表而已,不过指针是个实体的存放地址;可以进行地址运算;
如:p++,指针指向下一地址;p=q以q指针指向地址作为p指针的地址;
普通的用法是,声明实体或实体数组,用指针指向实体的地址:实体 b,g[8],*p;
p=b;数组名称实际就是固定长度的指针,所以常有:p=g;p=g+2相当于p=g[2];
如函数 void fun(int b[]);可以用int *p;fun(p)来调用;p代表数组b;
如函数 void fun(int *p);可以用int b[6];fun(b)来调用;b相当于指针p;
第一个错误:m是一个普通变量,输入的时候,格式不应该是%s,所以主函数里面的scanf("%s",m);应该改成scanf("%c",m);
第二个错误:if(m==a) x=reverse;
else if(m==b) x=upper;
a和b没有值,所以应该把这个改成
a='a';b='b';
if(m==a) x=reverse;
else if(m==b) x=upper;
第三个错误:c=(*x)(*y,n);被调函数第一个参数是指针,传过去的应该是地址,所以应该改成
c=(*x)(y,n);