先看一个例子
- #include
-
- int
- main(int argc, char* argv[])
- {
- const char* a = "hello";
- const char* b = "hello" + 1;
- printf("address of a: %p, content: %s\n", a, a);
- printf("address of b: %p, content: %s\n", b, b);
- return 0;
- }
a指向一个字符串"hello", "hello"代表这个字符串的起始地址,那么,"hello" + 1就代表这个字符串的第二个字符所在的地址。因此b相当于在a的基础上向后移了一位,因此b指向的字符串为"ello",此时a和b会指向同一个字符串的不同位置吗?
编译并执行
- $ g++ -o string_plus_int string_plus_int.c
- $ ./string_plus_int
- address of a: 0x560d07c95008, content: hello
- address of b: 0x560d07c95009, content: ello
看起来似乎是的。
不过通过这个例子可以说明给字符串加上整数会发生什么。下面是一个例子