It's called a line continuation marker and tells the preprocessor to append the following line to the current line. So if you ran that code through just the preprocessor stage of the compilation process and spit out the results, you'd see:
Code:
char *filter[] = {"LOW","HIGHP","BANDP","ALLP"};
Basically, it just allows you to break up a single line into multiple lines for readability purposes. In this case, it doesn't really matter when all is said and done because the compiler ignores white space and would give you the same machine code either way. But if you're creating macros (using #define), then those are handled by the preprocessor and require the line continuation markers to be there if your macro spans multiple lines.
e.g.:
Code:
// VALID
#define FOO(m) puts(m);
Code:
// INVALID
#define FOO(m)
puts(m);
Code:
// VALID
#define FOO(m)\
puts(m);