打印具有相同值的两个字符串文字会给出相同的地址

时间:2016-09-19 21:41:44

标签: c memory memory-management cpu-architecture

有人可以解释以下内容:

    some_fn("A");
    some_fn("A");

为什么会:

import { PaginationService, PaginationControlsCmp } from 'ng2-pagination'; 

打印存储在同一个内存地址上?

1 个答案:

答案 0 :(得分:1)

首先,关闭使用%d来打印指针(就像您在编辑之前在代码中所拥有的那样)无效并导致未定义的行为。您应该改为使用%p指针。

话虽如此,对some_fn的两次调用都被传递了一个字符串文字,每个字符串都是相同的。字符串文字通常存储在内存的只读部分中,当特定字符串文字多次出现在代码中时,编译器通常会使用该文字的单个实例。因此,在这种情况下,当它出现在不同的地方时,该文字的地址是相同的。