c语言函数指针交换值 c语言利用指针实现交换两个变量的值

c语言指针值交换小弟求解!!!因为指针a b是指向指针p q的,所以写成a b的时候只是单纯的指向p q它们所在的地方,而不是指向 i j的地方,也就相当于指针p q换了个位置,使得a指向q也就指向j,b指向p也就指向i , 但是i,j自己的值并没有变化 。那么void swap(int *a,int *b)函数对应的swap(p,q);的值是5,3 。但是因为:只是p和q交换了位置,自己本身,但是没有牵扯到它们所指的地址 , 也就是p还是指i,q还是指j 。
所以最后*p,*q这两个指针所指的值还是3,5 。
C语言用指针交换两个数主函数里指针p指向变量a的地址,q指向变量b的地址,
*p=a,*q=b,这应该没问题吧 。
change函数的形参分别是取a的地址和b的地址 , 
然后用第三个变量t来实现值交换 。
再打印就是互换后的值 。
C语言中 , 怎么交换指针数组里的值?程序主要通过冒泡法使用函数strcmp比较两指针所值字符串大小,通过临时指针交换两指针指向 , 实现字符串排序,代码如下,
//程序功能,从小到大排序10个字符串
#include stdio.h
#include string.h
void bubble_sort(char *a[], int n);
【c语言函数指针交换值 c语言利用指针实现交换两个变量的值】int main(int argc, char *argv[])
{
char a[10][20]={0};//存储10个字符串
char *p[10];//指向10个字符串
int i=0;
for(i=0;i10;i++)
{
gets(a[i]);//输入字符串
p[i]=a[i];//指向字符串
}
for(i=0;i10;i++)
{
puts(a[i]);//输出原字符串
}
bubble_sort(p,10);
for(i=0;i10;i++)
{
puts(p[i]);//输出排序后字符串
}
return 0;
}
//冒泡法排序,从小到大排序
void bubble_sort(char *a[], int n)
{
int i, j;
char *temp;
for (j = 0; jn - 1; j++)
for (i = 0; in - 1 - j; i++)
{
if(strcmp(a[i],a[i+1])0)//交换指针
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
int strcmp( const char *str1, const char *str2 );比较字符串str1、str2,返回值大于0 , str1str2 , 返回值小于0,str1str2,返回值等于0,str1==str2 。
c语言函数指针交换值的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言利用指针实现交换两个变量的值、c语言函数指针交换值的信息别忘了在本站进行查找喔 。

    推荐阅读