这里我不是在谈论某种特定的编程语言。我想知道不同数据结构之间这些东西有什么区别。我认为列表基本上应该是可调整大小的,而数组则不是,但我不确定。
例如,我想让用户在值之前键入所需的消息,如下所示:
scanf(" Message%c", &character);
Run Code Online (Sandbox Code Playgroud)
没关系,但是我希望这条消息包含一些像这样的空格:
scanf(" A required message %c", &character);
Run Code Online (Sandbox Code Playgroud)
编译器不会抱怨任何东西,但空格无关紧要,输入:
A required message C
Run Code Online (Sandbox Code Playgroud)
和
ArequiredmessageC
Run Code Online (Sandbox Code Playgroud)
给出相同的结果。
有没有办法让这些空格成为强制性的?
我们在初始化指针时不强制转换字符串:
char *string = "Hello World!";
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试显式定义一个数组(无论它是什么),编译器都会给我一个类型不兼容的警告:
char *string = {'H', 'e', 'l', 'l', 'o', '\0'};
Run Code Online (Sandbox Code Playgroud)
投射到char[]作品,但我想知道为什么我们必须投射?编译器没有看到初始化值{'H', 'e', 'l', 'l', 'o', '\0'}已经是一个数组吗?如果我们string[]以同样的方式初始化一个数组,我们就不必强制转换。我在这里假设编译器看到初始化值是什么,为什么在初始化指针时没有看到它?
是否可以让?:操作员处理以下示例中的多个语句?
condition ? FirstTrueExpression SecondTrueExpression : FirstFalseExpression SecondFalseExpression
Run Code Online (Sandbox Code Playgroud)
有没有办法避免指定“else”语句?
condition ? TrueExpression
Run Code Online (Sandbox Code Playgroud) 我知道为了避免重复rand()函数的相同输出,伪随机数生成器必须与srand函数一起播种。这意味着,如果我尝试 say srand(1), 的输出rand()将是一个值,如果我尝试srand(2),输出将包含另一个值。但是当我再次尝试第一个参数时srand(1),该值将与第一个输出中的值相同。这个问题让我认为所有随机值都可以以某种方式预测。同一个种子是否可以有不同的输出(比如我明天尝试同一个种子)?还是随机值确实可以预测?
c ×4
arrays ×2
input ×1
list ×1
pointers ×1
random ×1
random-seed ×1
scanf ×1
tuples ×1
whitespace ×1