您的位置:

c语言数组的位置,c语言数组位置公式

本文目录一览:

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维数组得到进一步理解,讲的有点乱,不知道你能不能理解