这是我的代码:
#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
我提供了两种不同的方法来解决这个简单的问题。一个被认为优于另一个?