C:确定数组中是否存在指针,并打印以下项目

C:确定数组中是否存在指针,并打印以下项目,c,arrays,pointers,printing,C,Arrays,Pointers,Printing,我需要写一个函数来获取数组,它的大小和指针,我需要检查数组中是否存在指针,如果存在,打印它后面的所有元素,我不允许创建局部变量或使用[]。 我这样做是为了找到指针是否存在 void printAfterX(int* arr, int n, int* x) { if (x < (arr + n) && x >= arr) { } } void printfertex(int*arr,int-n,int*x) { 如果(x=arr) { } }

我需要写一个函数来获取数组,它的大小和指针,我需要检查数组中是否存在指针,如果存在,打印它后面的所有元素,我不允许创建局部变量或使用[]。 我这样做是为了找到指针是否存在

void printAfterX(int* arr, int n, int* x)
{
    if (x < (arr + n) && x >= arr)
    {

    }
}
void printfertex(int*arr,int-n,int*x)
{
如果(x<(arr+n)和&x>=arr)
{
}
}

谢谢。

对于这种情况,您可以使用操作符
+
,它在这种情况下的工作方式与[]在指针上的工作方式完全相同。
至少看起来是这样的:

void printAfterX(int* arr, int n, int* x)
{
    if arr < x < arr+n{
          print array(x)
    }
}
void printfertex(int*arr,int-n,int*x)
{
如果arr
我给你两个提示:

(1) 函数参数是l值

(2) 最终递归


您应该同时尝试这两种方法,即使在这里重复使用是一种过度使用。

因为指针存在

for(x; x < (arr + n); x++){
    printf("%i\n", *x);
}
(x;x<(arr+n);x++)的
{
printf(“%i\n”,*x);
}

如果您的主要数据类型是int,并且您希望匹配指针指向的内容(而不是指针本身),则应该执行此任务,这里有一个可行的解决方案:

#include <stdio.h>

void printAfterX(int*, int, int*);

int main() {
    int array[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int sizeOfArray = 10;
    int *pointerX = &array[4];

    printAfterX(array, sizeOfArray, pointerX);

    return 0;
}

void printAfterX(int* arr, int n, int* x) {
    // Iterates over given array
    for (int i = 0; i < n; i++) {
        // If contents match
        if(*(arr + i) == *x) {
            for(int j = i + 1; j < n; j++) {
                // Print all elements after found element
                // (not-inclusive, i.e. j = i + 1)
                printf("%d ", *(arr + j));
            }
            break; // break outer loop, because job's done
        }
    }
    printf("\n"); // Line feed at end of iteration
}
#包括
无效printAfterX(int*,int,int*);
int main(){
int数组[]={0,1,2,3,4,5,6,7,8,9};
int-sizeOfArray=10;
int*pointerX=&数组[4];
printAfterX(阵列、sizeOfArray、指针X);
返回0;
}
无效printAfterX(int*arr,int n,int*x){
//迭代给定数组
对于(int i=0;i
这也应该有效:

bool SearchForPointer(int* arr, int n, int* x)
{ 
    if( 0 == n)
        return false;

    if( arr == x)
    {
        while( --n)
        { 
            arr++;
            ::printf( "Pointer: 0x%08X; Value: %d;\r\n", (intptr_t)(arr), *(arr));
        }

        return true;
    }

    return SearchForPointer( ++arr, --n, x);
}


int main()
{
    int     arr[]   = {1, 2, 3, 4, 5};
    int*    p       = arr+2;

    ::printf( "Searching for: p = 0x%08X; value: %d\r\n", (intptr_t)p, *p);

    SearchForPointer( arr, 5, p);


    return 0;
}

有什么问题?你试过的,有用吗?请把实际问题扩大一点?我不知道在这是你要我们为你解决的家庭作业之后如何打印元素?不,我正在自学,我不知道如何解决这个问题。
x
是指向应该在数组中搜索的值的指针吗?如果if语句返回true,应该是;这个片段在if语句中