本文目錄一覽:
C語言:用指針的方法查找數組中某個數在數組的位置
對於函數:int* find(int a[], int value),其中a為整型數組首地址,value是被檢驗值。我們可以利用指針a間接引用數組第一個元素的值,並將其與value比較,比較完後,將指針向後移動,再通過間接引用的方式比較下一個元素值,依次下去,直到在整型數組中找到被檢驗值或者整型數組所有元素比較結束為止。
那麼這裡有個問題,我們如何通過指針知到整型數組什麼時候結束呢?對於整型數組而言,沒有辦法,所以我們必須先知道整型數組的長度,可以在參數中給出,也可以在主函數定義中知曉。
程序如下:
int* find(int a[], int value)
{
int i=0,*p=a;
for(i=0;i=9;i++)
{
if(*p==value)
return p;
else
p++;
}
if(i=10)
return 0;
}
main()
{
int c[10]={1,2,3,4,5,6,7,8,9,0};
int n;
scanf(“%d”,n);
printf(“%x %d”,find(c,n),*(find(c,n)));/*第一個為函數返回地址,第二個為函數返回地址里的值*/
getch();
}
另外,我們測試一個程序或者函數是否正確不在於其能否正確運行,而在於其運行的結果是否符合我們的預期。針對上述程序,測試方法如下:
輸入任意一個數,如果這個數在數組C內,看是否能夠列印出16進位的地址數和與輸入值相同的數;如果不在數組C內,看是否返回值為0的地址。
C語言數組的地址怎麼看?
buf的指針類型的類型是int (*)[100]
所以buf+1即buff+100,即buff[100],即數組最後一個元素佔用內存後的地址位
C語言在數組中快速找到指定的數的位置
int main(void)
{
int aiNum[10] = {1,23,34,22,33,44,55,31,24,90};
int i;
int number;
printf(“input NUMBER”);
scanf(“%d”,number);
for(i=0;i10;i++)
{
if(number == a[i])
break;
}
if(i9)
{
printf(“NOT FOUND NUMBER\n”);
}
else
{
printf(“LOCATION:[%d]\n”,i);
}
return(0);
}
C語言數組的地址
其實你這個疑問是概念上的混淆,或者說對指針了解上上的欠缺
首先講int a[3] = {2,3,4};
這裡的a是這個數組的首地址,比如定義如:int *p = a;這時如果你進行如下操作:
p++;
printf(“%d\n”,*p);
結果會是輸出2,也就是說p+1相當於數組索引加1,但是像你所問的為什麼a和a是相同的 ,首先要知道他們分別代表什麼意思,a:像上面所說的是數組的首地址,做自加運算會根據數組類型來計算偏移量,那麼a是什麼東西呢,實際上它也是一個指針,是指向一個具有3個元素的數組的指針,如何理解,看以下定義:
如果你定義int *q = a;這時編譯器肯定報錯,繪製出數據類型不一致,那麼你這樣樣定義就沒有問題:int (*q)[3] = a;這時如果你再對q進行++操作,那麼加的就不同了,如相面的p++操作後p的值會加4,而這裡q++操作後的值會加12,也就是跳過3個數組元素,然而,確實這兩個指針的初始值是一樣的,只是類型不一樣而已,這對二維數組的訪問時很方便的,這個你可以參照2維數組得到進一步理解,講的有點亂,不知道你能不能理解
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/158436.html