我是編碼新手。我正在研究指標。以下代碼是正確的,這意味著其中沒有語法錯誤,但第二個 while 回圈仍然沒有列印任何內容。
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[]={10,20,30};
int *ptr=arr;
int i=0;
//Printing Array with Pointer
while(i<3)
{
printf("%d\n",*ptr);
ptr ;
i ;
}
//Printing Array without Pointer
printf("\n\n");
while(i<3)
{
printf("%d\n",*(arr i));
i ;
}
return 0;
}
uj5u.com熱心網友回復:
在第一個 while 回圈之后
while(i<3)
{
printf("%d\n",*ptr);
ptr ;
i ;
}
變數i等于3。
所以第二個while回圈的條件
while(i<3)
{
printf("%d\n",*(arr i));
i ;
}
立即評估為假。
您的代碼的問題是您選擇了錯誤的回圈。變數 i 僅在回圈內使用,因此應在回圈范圍內宣告它。
如果您想使用指標輸出陣列的元素,該變數也是多余的。
你可以寫例如
int arr[]={10,20,30};
const size_t N = sizeof( arr ) / sizeof( *arr ); // or use std::size
//Printing Array with Pointer
for ( const int *ptr = arr; ptr != arr N; ptr )
{
printf("%d\n",*ptr);
}
//Printing Array without Pointer
printf("\n\n");
for ( size_t i = 0; i != N; i )
{
printf("%d\n",*(arr i));
}
uj5u.com熱心網友回復:
寫i = 0;在 while 回圈的正上方。完成后for loop然后值i=3所以你必須再次i=0這樣while回圈開始列印
希望你能得到
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315020.html
上一篇:struct元素初始化的區別
