const char *怎么会改变?

时间:2012-06-05 00:45:54

标签: char gdb const

我正在编写一个可以递归打印目录的程序, 下面是gdb调试段

请注意d_path(它是一个const char *作为参数传递给print_dir_tree) 在步骤“if(dr == NULL){”之前是“/home/cifer/.gftp” 但是,在本条款

之后打印“/ home / cifer /!\ 200” 谁能告诉我为什么? 非常感谢!

Breakpoint 1, print_dir_tree (d_path=0x805b058 "/home/cifer/.gftp", depth=4)

    at dir_demo.c:15

15      DIR *dr = opendir(d_path);

(gdb) print d_path

$2 = 0x805b058 "/home/cifer/.gftp"

(gdb) print d_path

$3 = 0x805b058 "/home/cifer/.gftp"

(gdb) step

16      if (dr == NULL) {

(gdb) print d_path

$4 = 0x805b058 "/home/cifer/!\200"

(gdb) step

20      struct dirent *de = NULL;

(gdb) print d_path

$5 = 0x805b058 "/home/cifer/!\200"

(gdb) step

21      while((de = readdir(dr)) != NULL) {

(gdb) print d_path

$6 = 0x805b058 "/home/cifer/!\200"

(gdb) 

1 个答案:

答案 0 :(得分:0)

我需要确定你的代码,但如果你问是否可以更改const,答案是肯定的。如果你问它是如何改变的,那很简单,它就像一个常规变量一样对待,但它会在改变时给你一个警告。如果您尝试更改它并避免出现警告,则可以复制该变量,然后对其进行更改。