Saya mengalami masalah dalam menggunakan pointer dan array di C, tugasnya sederhana, saya memiliki fungsi yang mengubah angka menjadi array int kemudian mengirim kembali pointer ke array ini. Pada titik ini saya perlu menetapkan pointer ini ke dalam array pointer.
Apa yang saya dapatkan adalah sekumpulan angka secara berurutan, jadi saya kira itu adalah alamat pointer, masalahnya adalah saya perlu melihat nilai yang disimpan dalam array itu, bukan alamatnya...
Kompilasi program tanpa peringatan atau kesalahan.
//-----Function to convert single digits-----
int* convertToBits(int digitToConvert)
{
int binaryDigit[8];
int k;
for (int i = 7; i >= 0; i--) {
k = digitToConvert >> i;
if (k & 1) {
binaryDigit[i] = 1;
//printf("1");
}
else {
binaryDigit[i] = 0;
//printf("0");
}
}
return binaryDigit;
}
//-----Function to store single digits-----
void setupDigit(int temperature)
{
int* displayDigit[4];
if (temperature >= 0)
{
for (int i = 0; i < 4; i++) {
//displayDigit[i] = convertToBits(takeSingledDigit(temperature));
int* pointTo = convertToBits(takeSingledDigit(temperature));
displayDigit[i] = pointTo;
for (int j = 0; j < 8; j++) {
printf("%d", *(displayDigit[i]) + j);
}
printf("\n");
temperature /= 10;
}
}
else
{
for (int i = 0; i < 3; i++) {
//displayDigit[i] = convertToBits(takeSingledDigit(temperature));
int* pointTo = convertToBits(takeSingledDigit(temperature));
displayDigit[i] = pointTo;
for (int j = 0; j < 8; j++) {
printf("%d", *(displayDigit[i]) + j);
}
printf("\n");
temperature /= 10;
}
displayDigit[3] = minusChar;
}
int binaryDigit[8];
ketika fungsinya kembali? (petunjuk: poof!) Anda tidak dapat mengembalikan pointer ke array yang dideklarasikan secara lokal. Sekembalinya, tumpukan fungsi dihancurkan (dirilis untuk digunakan kembali). Array Anda yang dideklarasikan secara lokal berada di tumpukan fungsi itu. Penunjuk yang Anda kembalikan -- sekarang menunjuk ke alamat yang tidak valid -- poof! BerikanbinaryDigit
sebagai parameter ke fungsi Anda, atau alokasikan denganmailloc
dan kembalikan penunjuknya. - person David C. Rankin   schedule 16.02.2020return binaryDigit
memberikan perilaku tidak terdefinisi (alamat yang dikembalikan tidak valid di luar fungsi. Mungkin ada masalah lain, tapi masalah itu sangat menonjol. - person John3136   schedule 16.02.2020