ここに私のコードがあります:
#include <iostream>
using namespace std;
int countX(char*, char);
int main() {
char msg[] = "there are four a's in this sentence a a";
//char *ptr = msg; // <----- question 2!
cout << countX(msg, 'a');
cin.get();
}
int countX(char* ptr, char x) {
int c = 0;
for (; *ptr; ptr++) {
if (*ptr == x) c++;
}
/*
while(*ptr) {
if(*ptr==x) c++;
ptr++;
}
*/
return c;
}
安全な実践と指針に関して、特にいくつかのことを疑問に思っていました。
- for-loop での条件ステートメント、
; *ptr ;
これは安全な方法ですか? 配列の最後の要素のすぐ隣のメモリアドレスに何かが格納されている場合、それはすべて壊れますか? それは可能ですか?いつ終了するかをどのように知るのですか?*ptr
容認できないとみなされるのはいつですか? - (メインのコメントアウトに関して
char *ptr = msg;
):ポインターと配列は非常に似ていることは理解していますが、実際の配列をcountX
渡すこととポインターを渡すことの間に違いはありますか(配列の先頭を指しますか?)。 - では
countX
、単純な問題にアプローチするための 2 つの異なる方法を提供しました。一方が他方より優れていると見なされますか?