Здесь можно присвоить массив int указателю int * itemsPurchased?Если возможно, как вывести значения?
Да, мы можем присвоить массив указателю, поскольку массив является постоянным указателем, а обратный неверен.
Но это назначение следует использоватьочень осторожно, так как массив будет переменной стека, и область действия переменной должна быть рассмотрена перед обращением к указателю этой структуры
Также этот метод может быть предпочтительнее динамического выделения памяти, где фрагментация памяти является проблемой для malloc и free.и мы можем избежать издержек динамического выделения.
Ниже приведен код для этого и вывод значения печати в массиве:
#include <stdio.h>
typedef struct KnightsMartSale {
char firstName[21];
char lastName[21];
int numItemsOnList;
int *itemsPurchased; // array of item numbers
struct KnightsMartSale *next;
} KMSale;
int main() {
KMSale sale;
int iPos = 0;
int Array[] = {1, 2, 3, 4, 5};
sale.numItemsOnList = sizeof(Array) / sizeof(Array[0]);
sale.itemsPurchased = Array;
for (iPos=0; iPos < sale.numItemsOnList; iPos++) {
printf("sale %d: %d\n", iPos, sale.itemsPurchased[iPos]);
}
return 0;
}
output:
sale 0: 1
sale 1: 2
sale 2: 3
sale 3: 4
sale 4: 5