带有数组指针的结构在 print_stack() 函数中打印“随机数”

问题描述 投票:0回答:1

我正在训练和研究C中使用的结构,但是当我尝试创建一个数据结构时,我遇到了一个问题,比如他正在打印随机数,我认为他正在打印任何数组元素的地址在这个数组指针中,但我想知道如何修复它以通过指向数组的指针打印值。

#include <stdio.h>
#include <stdlib.h>

//creating a struct for a data structure

typedef struct {
    int size;
    int (*Arr)[10];
    int top;
}Stack;

//function prototype
void print_Stack(Stack *pilha);
int main(){
    Stack pilha;
    int Elementos[10] = {1,2,3,4,5,6,7,8,9,10};
    
    pilha.Arr = &Elementos;
    pilha.size = sizeof(Elementos)/sizeof(int);

    print_Stack(&pilha);
    return 0;
}

//creating a print stack function
void print_Stack(Stack *pilha){
    for (int x=0; x<pilha->size;x++){
        printf("%d",pilha->Arr[x]);
    }
}

我知道有更好的方法在结构中创建数组,无论如何,我想要一个解决方案来解决如何打印指针数组中的值以在其他情况下使用它,如果你解释它,它会变得更好:),因为我是编程初学者,我喜欢通过艰苦的方式学习它。

我试图获取地址,放入变量,然后再次创建

*
以获取值,但它不起作用

arrays c pointers struct
1个回答
1
投票

pilha->Arr
是指向
int[10]
的指针,因此在打印数组中的值时需要取消引用它(使用
*
):

printf("%d", (*pilha->Arr)[x]);
//           ^^^^^^^^^^^^^
© www.soinside.com 2019 - 2024. All rights reserved.