① c语言里的指针怎么比大小,都是地址到底谁大呀
本来就不存在谁大谁小,只有当指针是指向数组或字符串中元素时可以进行一些代数操作
如果是要比较指针指向的值的大小,请使用*操作符……但注意只有*p指向的数据类型可以比较才有效
此处是指向字符串的,大小就是p所指的元素(字符)在字符串中的前后顺序
② 请教c语言指针问题,利用指针比大小
inthuandi(int*a,int*b)
{
int*temp;
temp=a;
a=b;
b=temp;
}
出在这个函数里面
交换的是a和b的值。 这个是交换形参本身的值,无法带回主函数。
要影响实参,那么只能交换*a和*b的值。
③ c语言里,指针比较两个数的大小
inta=24,b=55;
int*p=&a;
int*q=&b;
if(*p<*q)
{
printf("a<b ");
}
else
{
printf("a>=b ");
}
④ C语言指针能否直接与地址比较大小
可以的,因为地址本来就是一个十六进制的数字,而且数字之间是可以进行数值的大小比较
⑤ 在C语言中是不是任意的同类型指针都可以比较大小,为什么
当然可以了.
你都说了是"同类型".
在C语言里除了结构体,
相同类型都可以比较.
就算是不同类型的指针,
你也可以把它们转换为void*型的指针,
然后进行比较.
比较一个指针就相当于是两个无符整型进行比较.
如果你说的是指针指向的数据进行比较,
那更好理解了.
int*是指向int的指针.
两个int*型的指针指向的都是int型数据.
而两个int型数据当然可以进行比较.
⑥ C语言指针变量比较
首先要 分清, 是在 声明中 还是在语句中。
声明中,例如:
int a=1, b=2;
int *p, *q; // 声明 *p 和 *q 是指针,用于指向 int 型数据。
p=&a; q=&b; //语句, p 和 q 是指针 指向的数据 的地址,p 指向 a, q 指向 b.
if ( p < q) printf("...."); // 语句, p 和 q 是 "地址", 地址大小的比较。即 &a,&b 的比较。
若是 if ( *p < *q) printf("...."); // 语句, *p 和 *q 是 "数值“ 的比较,即 a,b 的比较,现在 a=1,b=2。
即,语句中 有星号的是 数值,没星号的是地址。
你的2道题里,p,q 是 地址。是地址值的比较。
⑦ c语言用==比较式是比较指针大小码
1、字符串比较用等号的话实际比较的是指针。例如:
char *p1="a";
char *p2="b";
if(p1==p2)
{
.........
}
比较p1和p2吧,这个比较实际上比较的是指针大小,也就是"a"、"b"这两个字符串首地址的大小
如果要比较字符串大小可以使用strcmp函数
2、例程:
intmain()
{
char*p="x",s[]="x";
printf("%d ","x"=="f");//二者地址不同,所以是0
printf("%d ","x"=="x");//p指向字符串常量"x",以及程序中出现"x"常量的地方发生了常量折叠,所以该句与下一句比较的地址相同
printf("%d ",p=="x");
printf("%d ",s=="x");//s是字符串数组,地址与字符串常量"x"地址不同
}
⑧ C语言指针法三个数比较大小!求指错!
你对指针的认识和操作存在问题,请多看书并多练习体会
#include<stdio.h>
voidmain()
{
inta,b,c,*p1,*p2,*p3,*p;
p1=&a;
p2=&b;
p3=&c;//指针变量赋值不应该带*
scanf("%d%d%d",p1,p2,p3);
if(*p1>*p2)
{
p=p1;//交换方法错误,这样才对
p1=p2;
p2=p;
}//保证a<=b
if(*p1>*p3)
{
p=p3;
p3=p1;
p1=p;
}//保证a<=c
if(*p2>*p3)
{
p=p2;
p2=p3;
p3=p;
}//保证b<=c但这里并没有改变abc的值
printf("%d%d%d ",*p1,*p2,*p3);
}
⑨ C语言中用指针方法比较三个数大小
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语言:用指针实现字符串大小的比较,应该怎样做呢
字符串比较,可采用循环遍历字符串,用对应位置的指针所指向的字符进行比较,当相等时,循环,遇到不等或其中一个字符串结束时,结束循环,返回对应指针的对应的字符的差值,根据差值判断两个字符串的大小:
返回值大于0,则前串大,
返回值小于0,则前串小,
返回值等于0,两个字符串相等。
参考代码:
#include<stdio.h>
int stringcompare(char *a,char *b)
{
while( *a && *a == *b )
{
a++;
b++;
}
return *a-*b ;
}
int main()
{
int ret;
char a[10];
char b[10];
printf("请输入字符串a: ");
gets(a);
printf("请输入字符串b: ");
gets(b);
ret=stringcompare(a,b);
if ( ret > 0 )
printf("a>b\n");
else if ( ret < 0 )
printf("a<b\n");
else
printf("a=b\n");
system("pause");
return 0;
}
运行结果:
请输入字符串a:
abcde
请输入字符串b:
acd
a<b
请输入字符串a:
acd
请输入字符串b:
abcde
a>b
请输入字符串a:
abc
请输入字符串b:
abc
a=b