加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在c中使用显式/原始指针

发布时间:2020-12-16 09:39:44 所属栏目:百科 来源:网络整理
导读:我读到在C中使用原始指针是不好的.相反,我们应该使用auto_ptr.在下面的代码中,我填充了在main()中创建的foo()中的向量.我做得对吗,或者没有使用显式指针有更好的方法. #include iostream#include vector#include stringusing namespace std;void foo(vectors
我读到在C中使用原始指针是不好的.相反,我们应该使用auto_ptr.在下面的代码中,我填充了在main()中创建的foo()中的向量.我做得对吗,或者没有使用显式指针有更好的方法.

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void foo(vector<string> *v){

    (*v).push_back(" hru");
}

int main(){
    vector<string> v;
    v.push_back("hi");
    foo(&v);
    for(int i=0;i<v.size(); i++){
        cout << v[i];
    }

}

解决方法

C使用引用来完成您要执行的操作:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void foo(vector<string>& v){
    v.push_back(" hru");
}

int main(){
    vector<string> v;
    v.push_back("hi");
    foo(v);
    for(int i=0;i<v.size(); i++){
        cout << v[i];
    }
}

引用和指针是相似的,有一个非常重要的区别:没有空引用这样的东西(在C中Constructing one是Undefined Behavior你可以构造一个,但这样做被认为是黑客).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读