![]() |
1
28
此行初始化
另一条线:
不初始化本地数组,它只是初始化本地指针。允许编译器将其设置为指向数组的指针,该数组 你不能换衣服 就像密码是
C之所以不使用强制转换就允许这样做,主要是为了让古老的代码继续编译。您应该假设源代码中字符串文字的类型是
|
![]() |
2
14
在第二个示例中:
指示者
你可以做一些事情:
以便
|
![]() |
3
4
在第二个代码中,您传递的是字符串文字的地址。试图修改字符串文字会给出未定义的行为。 |
![]() |
4
3
在第二种情况下(
|
![]() |
5
0
第一种情况创建一个(非常量)char数组,该数组足够大,可以容纳字符串,并用字符串的内容对其进行初始化。第二种情况是创建一个char指针,并将其初始化为指向字符串文字,字符串文字可能存储在只读内存中。 由于strtok想要修改您传递给它的参数所指向的内存,后一种情况会导致未定义的行为(您传递的指针指向(const)字符串文字),因此它不会导致崩溃。 |
![]() |
6
0
因为第二个声明一个指针(可以更改)为常量字符串… 所以取决于编译器/平台/操作系统/内存映射…“hello world”字符串将存储为常量(在嵌入式系统中,它可能存储在ROM中),尝试修改它将导致该错误。 |
![]() |
Kauder Hexenban · C中函数中指针的错误行为 8 年前 |
![]() |
Pratik K. Shah · strtok()函数在C中无法正常工作 10 年前 |
![]() |
chuckfinley · C: strtok值返回null 11 年前 |
|
KateMak · 通过delimeter拆分一个char数组,然后保存结果? 11 年前 |
![]() |
Syeda Amna Ahmed · 将字符串拆分为令牌并将其保存在数组中 11 年前 |