{
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、例程:
{
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"地址不同
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)