Don't forget you're declaring your arrays with a size of 7. This means the indexes go from 0 to 6. By looping to < 8, then you're accessing an index (7) out of the arrays bounds. While this may not seem like a problem because it's just passing junk to your program, accessing memory that you didn't allocate can cause segmentation faults and make your program crash.
...and to your second question, not really. I suppose you could manipulate memset(), but that may not be a good idea, and it would only work with characters. Also, if I had to guess, memset() does a loop anyway.
Code:
#include <iostream>
#include <cstdio>
using namespace std;
const int SIZE1 = 7,
SIZE2 = 7;
int main() {
char arry[SIZE1][SIZE2] = { NULL };
// Changing the 4th row to 'A'
memset(arry + 3, 'A', sizeof(*arry));
for(int n = 0;n < 7;n++) {
for(int i = 0;i < 7;i++)
cout << "[" << arry[n][i] << "]";
cout << endl;
}
cin.get();
return 0;
}