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语句中