這是代碼:代碼需要將陣列發送到函式,函式將列印,但似乎存在運行時錯誤
#include <stdio.h>
#include <string.h>
void printArray(char* p, int len)
{
for (p; p < p len; p )
{
printf("%c", *p);
}
printf("\n");
}
int main(void)
{
char* msg = "hi jyegq meet me at 2 :)";
printArray(msg, strlen(msg));
getchar();
return 0;
}
uj5u.com熱心網友回復:
for (p; p < p len; p )
此條件始終為true,因為您不修改len并且p與 相同p,即使在突變之后也是如此。您需要定義一個新指標q,該指標最初等于p且僅發生變異q。
void printArray(char* p, int len)
{
for (char *q = p; q < p len; q )
printf("%c", *q);
printf("\n");
}
最好定義char const* p,因為沒有理由改變p。
uj5u.com熱心網友回復:
在這個 for 回圈中
for (p; p < p len; p )
條件總是評估為邏輯true(除了len等于0或具有呼叫未定義行為的負值的情況),因為p顯然小于p len.
該函式可以通過以下方式宣告和定義
void printArray( const char *s, size_t len )
{
for ( const char *p = s; p < s len; p )
{
putchar( *p );
}
putchar( '\n' );
}
注意指標引數應該有限定符const,因為指向的字串在函式內沒有改變,第二個引數應該有 type size_t。它是函式的回傳型別strlen。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/444616.html
上一篇:掃描成指標
