我用c写了这段代码,它工作正常。
char* str2 = string + (str_len - end_len);
str_len和end_len是两个整数,string是另一个字符指针字符串。我不明白为什么我能把一个整数加到一个字符指针串上。这不应该给予一个类型错误吗?
str_len
end_len
string
zwghvu4y1#
str2的指针值为string + (str_len - end_len)。如果offset = str_len - end_lensize of string(array)+ 1,则它是未定义的行为(注意< 0 or offset >:sizeof "hello "计算字符串的尾部'\0',因此是-1)。下面是一个例子:
str2
(str_len - end_len)
offset = str_len - end_len
offset
sizeof "hello "
-1
#include <stdio.h> int main() { char string[] = "hello world"; char *str2 = string + (sizeof "hello " - 1); printf("%s\n", str2); }
打印:
world
1条答案
按热度按时间zwghvu4y1#
str2
的指针值为string
+(str_len - end_len)
。如果offset = str_len - end_len
size ofstring
(array)+ 1,则它是未定义的行为(注意< 0 oroffset
>:sizeof "hello "
计算字符串的尾部'\0',因此是-1
)。下面是一个例子:打印: