找回密码
 立即注册
首页 业界区 安全 const char* 指针作为函数参数也能被修改?

const char* 指针作为函数参数也能被修改?

嗦或 昨天 20:01
问题

如下示例程序所示, 首先构建了一个如下所示的Node树,每个节点存有一个数字。程序需要通过node的name返回其数字,即findNodeNumByName,其中name是const char*,表示方法中不会修改其参数。另外这个参数来自于另外一个方法,即findNodeNameByNum,输入数字找到对应的node的name。所以正确的程序输出应该为输入1,输出1,输入2,输出2,输出与输入相同。
1.png

[code]#include#include#includeclass Node{public:        Node(std::string s, int n)        {                name = (char*)malloc(10);                strcpy_s(name, 10, s.c_str());                num = n;        }        std::string GetName() {return name;}        const char* GetNameCstr() {return name;}        int GetNum() { return num; }        std::vector GetChildNodes() {return childNodes;}        char* name;        int num;        std::vector childNodes;};Node* A, * B, * C, * D, * E, * F, * G, * H;void initializeNodes(){        A = new Node("A", 0);        B = new Node("B", 1);        C = new Node("C", 2);        D = new Node("D", 3);        E = new Node("E", 4);        F = new Node("F", 5);        G = new Node("G", 6);        H = new Node("H", 7);        A->childNodes.push_back(B);        A->childNodes.push_back(C);        B->childNodes.push_back(D);        B->childNodes.push_back(E);        B->childNodes.push_back(F);        C->childNodes.push_back(G);        E->childNodes.push_back(H);}const char* findNodeNameByNum(Node* node, int num){        const char* n = node->GetName().c_str();        if (node->GetNum() == num)                return n;        for (auto* n : node->GetChildNodes())        {                const char* result = findNodeNameByNum(n, num);                if (result != nullptr)                        return result;        }        return nullptr;}int findNodeNumByName(Node* node, const char* name){        //std::cout
您需要登录后才可以回帖 登录 | 立即注册