我如何正确按下无效指针?

时间:2018-03-28 21:47:58

标签: c++11

APP_NAME=#####
APP_ENV=local
APP_KEY=base64:IGN5qlcuICOZ3LAeIMPh+DXtTPA/51P2tCIRW1DmDY4=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=####

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=dbuser
DB_PASSWORD=pass

2 个答案:

答案 0 :(得分:1)

你的主要功能与你的功能不同,该功能有一个额外的&

主要是ptr_1是一个void*,它指向静态"Hello world"数组,就像str_1一样。因此,转换为char*是正确的。

func中,svoid*,指向strs指向str,指向"Hello world"。因此,转换为char**是正确的。

答案 1 :(得分:0)

main中,str是指向char(C字符串)的指针,ptr_1是指向某事物的指针。因此,将ptr_1转换回指向char char *的指针是可以的。

func中,参数str已经是指向char const char *的常量指针。指针s指向str的地址,因此是指向指针的指针。因此,您需要取消引用它两次以获取char数组的内容。

使用的演员阵容是C-casts。在C ++中,应优先选择强制转换运算符const_caststatic_castreinterpret_castdynamic_cast

std::cout << *static_cast<char **>(s) << std::endl;