① 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