关于以null结尾的字符串(混淆)

lig*_*rek 1 c c++

以下着色器被称为一个字符串和一个以null结尾的字符串.

着色器:

const GLchar* VertexShader =
{
    "#version 330\n"\

    "layout(location=0) in vec4 in_Position;\n"\
    "layout(location=1) in vec4 in_Color;\n"\
    "out vec4 ex_Color;\n"\

    "void main(void)\n"\
    "{\n"\
    "   gl_Position = in_Position;\n"\
    "   ex_Color = in_Color;\n"\
    "}\n"
};
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 每行末尾的斜线是什么意思?而且,为什么最后一行没有斜线?
  2. 着色器中有几个字符串,为什么着色器据说只有一个字符串?
  3. 为什么它被称为以空字符结尾的字符串?(因为没有'\ 0')

K-b*_*llo 6

每行末尾的斜线是什么意思?而且,为什么最后一行没有斜线?

这是一个续行,它意味着当前行继续在下一行.

着色器中有几个字符串,为什么着色器据说只有一个字符串?

顺序字符串文字折叠为单个字符串文字.因此"ab" "c"变得"abc".

为什么它被称为以空字符结尾的字符串?(因为没有'\ 0')

字符串文字以null结尾.所以"ab"实际上是{'a', 'b', '\0'}.请注意,折叠字符串文字时,将删除除最后一个隐式空终止字符之外的所有字符.