我被要求编写一个函数,在x
元素之后打印数组的内容(如x
中所示,因为x
是指向内部的指针数组)。我不允许将[]
用于初始化之外的任何事情,并且不允许在函数内部创建变量 - 我可能只使用函数从main接收的内容,即长度(int n
) ,数组(int* arr
)和元素x
(int* x
)。
我的问题是如何只使用没有循环索引的指针在数组中打印x
和更早?
这是我写的:
void printAfterX(int* arr, int n, int* x)
{
if ((arr <= x) && (x < arr + n))
{
while(x < (arr + n))
{
printf("%8d", *(arr+x)); //I know you can't do this
x++;
}
}
}
为此:
int arr[] = { 0,5,6,7,8,4,3,6,1,2 };
int n=10;
int* x = (arr+3);
printAfterX(arr, n, x);
输出应为:
7 8 4 3 6 1 2
编辑:谢谢你们的帮助!工作得很好。 :)
答案 0 :(得分:2)
void printAfterX(int* arr, int n, int* x)
{
arr += n; // make arr to point past the last element of the array
for( ; x < arr; x++) // walk till the end of array
printf("%8d", *x); // print the current item
}
答案 1 :(得分:0)
你想要这个:
#include <stdio.h>
#include <stdlib.h>
void printAfterX(int* arr, int n, int* x)
{
while(x < (arr + n))
{
printf("%d ", *x);
x++;
}
}
int main()
{
int arr[] = { 0,5,6,7,8,4,3,6,1,2 };
int n = 10;
int *x = (arr+3);
printAfterX(arr, n, x);
return 0;
}
答案 2 :(得分:-1)
为此更改printf
行:
printf("%8d", *x);