ฉันมีปัญหาในการใช้พอยน์เตอร์และอาร์เรย์ใน C งานง่ายมาก ฉันมีฟังก์ชันที่แปลงตัวเลขเป็นอาร์เรย์ int จากนั้นส่งตัวชี้กลับไปยังอาร์เรย์นี้ ณ จุดนี้ ฉันต้องกำหนดพอยน์เตอร์นี้ให้กับอาร์เรย์ของพอยน์เตอร์
สิ่งที่ฉันได้รับคือตัวเลขจำนวนมากตามลำดับ ดังนั้นฉันคิดว่านั่นเป็นที่อยู่ของพอยน์เตอร์ ปัญหาคือฉันต้องดูค่าที่จัดเก็บไว้ในอาร์เรย์เหล่านั้น ไม่ใช่ที่อยู่...
โปรแกรมคอมไพล์โดยไม่มีคำเตือนหรือข้อผิดพลาด
//-----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];
เมื่อฟังก์ชันกลับมา (คำใบ้: poof!) คุณไม่สามารถส่งคืนตัวชี้ไปยังอาร์เรย์ที่ประกาศในเครื่องได้ เมื่อส่งคืนฟังก์ชันสแต็กจะถูกทำลาย (ปล่อยเพื่อนำกลับมาใช้ใหม่) อาร์เรย์ที่ประกาศในเครื่องของคุณอยู่ในฟังก์ชันสแต็กนั้น ตัวชี้ที่คุณส่งคืน - ตอนนี้ชี้ไปยังที่อยู่ที่ไม่ถูกต้อง - กะเทย! ระบุbinaryDigit
เป็นพารามิเตอร์ให้กับฟังก์ชันของคุณ หรือจัดสรรด้วยmailloc
แล้วส่งคืนพอยน์เตอร์ - person David C. Rankin   schedule 16.02.2020return binaryDigit
ให้พฤติกรรมที่ไม่ได้กำหนดไว้ (ที่อยู่ที่ส่งคืนไม่ถูกต้องนอกฟังก์ชัน อาจมีปัญหาอื่น ๆ อยู่ แต่ปัญหานั้นโดดเด่นจริงๆ - person John3136   schedule 16.02.2020