C语言中用指针方法比较三个数大小

C语言中用指针方法比较三个数大小,第1张

void exchange(int p1,int p2,int p3)
{
void ex(int p11,int p22);
if(p1<p2) ex(p1,p2);//ex(p1,p2);传递指针
if(p1<p3) ex(p1,p3);// ex(p1,p3);
if(p2<p3) ex(p2,p3);// ex(p2,p3);
}
望采纳

当然可以了
你都说了是"同类型"
在C语言里除了结构体,
相同类型都可以比较
就算是不同类型的指针,
你也可以把它们转换为void型的指针,
然后进行比较
比较一个指针就相当于是两个无符整型进行比较
如果你说的是指针指向的数据进行比较,
那更好理解了
int是指向int的指针
两个int型的指针指向的都是int型数据
而两个int型数据当然可以进行比较

二维数组名a是一个指向指针的指针。也是一个指针数组名,它含3个元素,a[0]a[1],a[2]。虽然a存储的地址是该数组首元素的地址,但它指向的并不是一个变量,而是一个指针。应为a是一个指向指针的指针,它指向的是和自己存储的地址相同的指针,即a[0],a[0]是第一行一维数组的指针,可以指向具体变量。
这下明白了吧,(a+0)它不是变量,她是指针,a指向a[0],(a+0)就是a[0]
望采纳!

运行效果:写了一个,希望对你有帮助……#include"stdioh"
int stringcmp(char str1,char str2)
{
while((str1++)==(str2++));
return (str1-1)-(str2-1);
}
int main()
{
int n;
char str1[20],str2[20];
scanf("%d",&n);
while(n>0)
{
scanf("%s%s",str1,str2);
printf("%d",stringcmp(str1,str2));
}
return 0;
}

你只交换了地址,并没有交换地址指向的值。当然相当于什么也没做。改成int q;
if(i>j)
{q=i;i=j;j=q;}
if(j>p)
{q=j;j=p;p=q;}
if(i>j)
{q=i;i=j;j=q;}或者在C++中可以传递引用。

1、字符串比较用等号的话实际比较的是指针。例如:

char p1="a";
char p2="b";
if(p1==p2)
{

}
比较p1和p2吧,这个比较实际上比较的是指针大小,也就是"a"、"b"这两个字符串首地址的大小

如果要比较字符串大小可以使用strcmp函数

2、例程:

int main()
{
 char p = "x",s[] = "x";
 printf("%d\n","x"=="f"); //二者地址不同,所以是0
 printf("%d\n","x"=="x"); //p指向字符串常量"x",以及程序中出现"x"常量的地方发生了常量折叠,所以该句与下一句比较的地址相同
 printf("%d\n",p=="x");
 printf("%d\n",s=="x");  //s是字符串数组,地址与字符串常量"x"地址不同
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13346341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存