关于C++智能指针初始化问题

struct s{......}//声明了一个结构
vector< s>temp(10);//一个矢量,已初始化
vector< shared ptr< s>>sps(temp.size());//一个智能指针矢量

然后怎么把这个智能指针矢量用new初始化为temp中的值?

1个回答

vector中每个元素一很个个赋值,用temp中每个元素地址

Tach1banA
别在碗里放花菜啊 我试过这样 然后出现: error C2678: 二进制“-”: 没有找到接受“std::shared_ptr<Review>”类型的左操作数的运算符(或没有可接受的转换)
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于智能指针计数的问题
最近用到_bstr_t。智能指针内部有计数机制,但有个问题没明白:rnrn_bstr_t A("test"); -----------> 此时对象A中计数为 1 。rn_bstr_t B(A); rnrn_bstr_t 类的拷贝构造函数原型如下:rn_bstr_t::_bstr_t(const _bstr_t& s) throw()rn : m_Data(s.m_Data) -----------> 赋值。此时对象B中的计数应该和A相等,为 1 吧?rnrn _AddRef(); -----------> B中的计数加1,此时应该为 2吧?rnrnrn此时是不是应该有什么机制使A的计数也相应增加?否则释放A时,A的计数减1后为0相应内存直接就释放了,但B还引用着呢。rn好纠结啊。rn
关于智能指针的简单问题
为什么有的成员用->访问,有的用.访问?
关于智能指针的一个问题
这样定义了一个指针:rnPtr* m_frontHighways;rn其中,Ptr是类似于auto_ptr的一个智能指针,可以回收内存;rn在构造函数中,这样初始化:rn[code=c]rnm_frontHighways = new Ptr [1];rn[/code]rnrn但是需要它指向一个Highway的数组,于是在其它函数中,又有这样的:rn[code=c]rnm_frontHighways = new Ptr[m_numberOfLanes];rn[/code]rnrn在析构函数中,是这样释放的:rndelete [] m_frontHighways;rnrn先说说我的理解:rnm_frontHighways是一个指针,指向一个智能指针对象,这个智能指针对象又指向Highway的对象;rn1.这里使用了两次new,但是只释放了一次,应该存在内存泄露吧?rn2.为什么不直接使用一个智能指针,或者只使用普通的指针呢? 为什么会用这种用法?
关于智能指针的强制类型转换问题
智能指针可以毫无问题的进行向下类型转换,却不能进行向上类型转换。例如rnclass Arn virtual boost::shared_ptr clone();rnrnrnclass B:public Arn virtual boost::shared_ptr clone();rnrnrnvoid main()rnrn boost::shared_ptr p(new B()); //okrn boost::shared_ptr p1(p->clone()); //error ,因为A* 不能转换成B*rnrn对于普通的指针没有这样的问题,因为B* p1=dynamic_cast(p->clone())肯定是成功的。甚至我可以定义成rnclass Arn virtual A* clone();rnrnclass B:public Arn virtual B* clone();rnrnrn有无办法可以对智能指针实施向上的类型转换?
关于智能指针的问题
我看《c++ primer》里的智能指针。他说,在引入使用计数后,对一个对象进行赋值的时候,赋值操作符减少左操作数所指的对象的使用计数值,增加有操作数所指对象的使用计数的值。什么意思?
关于接口的智能指针问题
我定义了一个接口,比方说IMyInterface,就应该可以使用它的智能指针如下:rnIMyInterfacePtr pInterface;rn那么这个IMyInterfacePtr指针是在什么地方定义的呢?
关于COM智能指针的问题
有一种理论是 不要使用全局的智能指针rn问题如下:rnrn比如我在app的InitInstance()中通过AfxOleInit()来初始化COM rn是不是只要我没有使用全局的智能指针 rn这些智能指针在COM“析构”(是不是叫析构?)之前 都会自动释放 而不用我自己手动释放rnrn然而 如果 我在一个函数中:rnrnvoid keep()rnrn ::CoInitialize( NULL );rn CComQIPtr < IFun, &IID_IFun > spFun;rnrn //这句是必须的rn spFun.Release(); rnrn ::CoUninitialize();rnrnrn如果像上面代码那样初始化COM 在COM “析构”之前 必须主动释放 智能指针rnrn我不知道这是为什么??? rn::CoUninitialize();之后 发生什么了? 意思是 COM“析构”之后 spFun就不能用了? 还是什么意思rnrn请教各位大吓 小弟COM新手rnrn
关于智能指针的问题~~~在线
_Tp& operator*() const __STL_NOTHROW return *_M_ptr; rn_Tp* operator->() const __STL_NOTHROW return _M_ptr; rn _Tp* get() const __STL_NOTHROW return _M_ptr; rnrn以上为auto_ptr的几个成员函数 请问其中的__STL_NOTHROW是什么意思? 多谢~~~rn
关于智能指针释放的问题。
用word的智能指针操作word对象。但是总是出现问题。rn[code=C/C++]#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL"rn#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"rn#import "C:\Program Files\Microsoft Office\Office11\MSWORD.OLB" \rn rename("ExitWindows","_ExitWindows") \rn rename("RGB","_RGB") \rn rename("FindText","_FindText")rnrnvoid COPWordDlg::OnBnClickedButton1()rnrn // TODO: 在此添加控件通知处理程序代码rn ::CoInitialize(NULL);rnrn Word::_ApplicationPtr pApp;rn pApp.CreateInstance(__uuidof(Word::Application));rn if(!pApp)rn rn MessageBox(_T("创建word 失败!"));rn int iRet=GetLastError();rn return ;rn rnrn Word::DocumentsPtr pDocs=pApp->GetDocuments();rn Word::_DocumentPtr pDoc1;rn //pDoc1.CreateInstance(__uuidof(Word::Document));rn CComVariant Template(_T(""));rn CComVariant NewTemplate(false),DocumentType(0),Visible;rn pDoc1=pDocs->Add(&Template,&NewTemplate,&DocumentType,&Visible); rn //Word::SelectionPtr pSelection=pDoc1->GetSections();rn Word::SelectionPtr pSelection=pApp->GetSelection();rn Word::TablesPtr pTables=pSelection->GetTables();rn CComVariant wdWord9TableBehavior(1),AutoFitBehavior(0);rn pTables->Add(pSelection->GetRange().GetInterfacePtr(),1,1,&wdWord9TableBehavior,&AutoFitBehavior);rnrnrnrn CComVariant FileName(_T("D:\\1.doc")); //文件名rn CComVariant FileFormat(0); //重点,看下面的说明rn CComVariant LockComments(false),Password(_T(""));rn CComVariant AddToRecentFiles(true),WritePassword(_T(""));rn CComVariant ReadOnlyRecommended(false),EmbedTrueTypeFonts(false);rn CComVariant SaveNativePictureFormat(false),SaveFormsData(false);rn CComVariant SaveAsAOCELetter(false);rn pDoc1->SaveAs(&FileName,&FileFormat,&LockComments,&Password,rn &AddToRecentFiles,&WritePassword,&ReadOnlyRecommended,rn &EmbedTrueTypeFonts,&SaveNativePictureFormat,&SaveFormsData,rn &SaveAsAOCELetter);rnrn CComVariant SaveChanges(false),OriginalFormat,RouteDocument;rn pApp->Quit(&SaveChanges,&OriginalFormat,&RouteDocument);rn//在这里我不管怎么释放都会出错。请问应该怎么解决这个错误?rn pApp->Release();rn pDocs=NULL;rn pDoc1=NULL;rn pSelection=NULL;rn pTables=NULL;rn //pDocs->Release();rn //pDoc1->Release();rn //pSelection->Release();rn //pTables->Release();rnrnrn rn ::CoUninitialize();rnrnrn[/code]rn错误提示是:OPWord.exe 中的 0x769bd8f5 处未处理的异常: 0xC0000005: 读取位置 0x00170048 时发生访问冲突rn void _Release() throw()rn rn if (m_pInterface != NULL) rn m_pInterface->Release(); //在这里出错了。rn rn rnrn印象中的智能指针是不需要释放的啊。可是在上面的程序中不管我释放还是不释放。不管怎么释放都会出现那个错误,不知道该如何解决。rn
关于boost的智能指针的问题?
在看boost的scope_ptr的源码时,发现它析构函数里是调用这个函数来delete内存的rnrn// verify that types are complete for increased safetyrntemplate inline void checked_delete(T * x)rnrn // intentionally complex - simplification causes regressionsrn typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];rn (void) sizeof(type_must_be_complete);rn delete x;rnrnrn不过前两个语句实在没看懂到底是什么作用,哪位大侠可以赐教一二???
c++关于智能指针的问题
[code=c]#include rn#include rnusing std::tr1::shared_ptr;rnusing std::tr1::weak_ptr;rnusing std::tr1::enable_shared_from_this;rnrnclass scope:public enable_shared_from_thisrn public:rn void get_this_shared_ptr()rn shared_from_this();rn rn;rnint main()rn shared_ptr a(new scope); rn a->get_this_shared_ptr();rn rn scope *b = new scope;rn b->get_this_shared_ptr();rnrn return 0;rnrn[/code]rn创建一个scope,由enabe_shared_from_this派生得到,在scope中获取this的share_ptr,在main函数中,第一二句没问题,第三四句就会有异常出错。rn我查看了enable_shared_from_this的源码,它的构造函数是一个默认构造函数:rn[code=c]rntemplatern class enable_shared_from_thisrn rn protected:rnrn enable_shared_from_this()rn rnrn enable_shared_from_this(const enable_shared_from_this&)rn rn[/code]rn里面的数据成员是一个weak_ptr:rn[code=c] mutable weak_ptr<_Tp> _M_weak_this;[/code]rn那么main中的第一二句,在创建scope的时候,调用的是enable_shared_from_this的默认构造函数,_M_weak_this执行默认初始化,它的类型是weak_ptr,rn[code=c]templaternclass weak_ptrrn rn public:rnrn typedef _Tp element_type;rnrn weak_ptr()rn : _M_ptr(0), _M_refcount() // never throwsrn rn[/code]rnweak_ptr执行默认初始化,_M_weak_this里面的元素就是空的。rn从一个空的weak_ptr转换到shared_ptr是应该报异常的:rn[code=c]inlinernshared_count::shared_count(const weak_count& __r)rn: _M_pi(__r._M_pi)rnrn if (_M_pi != 0)rn _M_pi->add_ref_lock();rn elsern __throw_bad_weak_ptr();rn[/code]rn所以第一二句也应该是出现异常的,可事实相反,是正确的,这是为什么?
关于ado智能指针的问题
我看了一个ADO的例子,我发现在两个类里都同时定义了两个智能指针rn在class CAdoRWAccessApp 的头文件里出现rnpublic:rn_ConnectionPtr m_pConnection;rn在class CAdoRWAccessDlg 的头文件里也出现rnpublic:rn rn_ConnectionPtr m_pConnection;rnrn为什么要这样呢?这样的话,我怎么知道到用的时候是哪个啊rn请高手帮忙解决啊rn
有关ADO中智能指针的初始化问题?很菜的!
在VC中使用ADO访问数据库,我的程序总是提示无效指针,单步以后发现 m_pConnection.CreateInstance执行后m_pConnection地址为0x0000000。rn请教高手,除了什么问题?rn头文件和库我已加入了。rnrn代码如下:rnrn _ConnectionPtr m_pConnection; //declare the pointer to comrn m_pConnection.CreateInstance(_uuidof(Connection));//create a instance of connectionrn m_pConnection->Mode = iMode; //set the open mode of databasern m_pConnection->Open(cDSN,"","",0); //connect to the datasource named cODBcrnrn
请教:智能指针(auto_ptr)初始化的区别。
在用一个智能指针初始化智能指针时的几种方法有什么不同。rn例如:rn auto_ptr pstr_auto1(new string("hello word")); //已有智能指针rn //下面打算用pstr_auto1初始化pstr_auto2rn// auto_ptr pstr_auto2(pstr_auto1); //方法一rnrn// auto_ptr pstr_auto2(pstr_auto1.release()); //方法二rn请教方法一和方法二是否完全一样? 如果不一样,请教有什么不同。rn我知道方法二执行之后,pstr_auto1就脱离了对内存的控制权,也就相当于pstr_auto1已经失效了。那方法一呢?他们是完全等效么?rnrn// auto_ptr pstr_auto2(pstr_auto1.get()); //方法三 这个应对该是错误的吧rn方法三应该是错误的吧,生命期结束后内存会被释放2次。rn
关于智能指针。
在看more effective c++的异常部分rn发觉智能指针非常好rn请问大家在在项目中都用吗?还是选择性的用它?在什么时候最需要它?
关于智能指针
[code=c]rn#ifndef HANDLE_H_rn#define HANDLE_H_rn//句柄类rn#include //for std::runtime_errorrn#include //for std::size_trn#include rnrntemplate rnclass Handlernrnpublic:rnrn explicit Handle(T *p = 0): ptr(p), use(new std::size_t(1))rn rn //同一T*指针只能赋给一个Handle对象rn rn Handle(const Handle&h):ptr(h.ptr),use(h.use)rn rn ++*use;rn rn templatern explicit Handle(const Handle& h):ptr(h.ptr),use(h.use)rn rn ++*use;rn rn Handle(T *p,std::size_t n):ptr(p),use(new std::size_t(n)) rn //n==2 用于非NEW指针rn Handle& operator=(const Handle& rhs)rn rn ++*rhs.use;rn rem_ref();rn ptr = rhs.ptr;rn use = rhs.use;rn return *this;rn rn templatern Handle& operator=(const Handle&);rnrn ~Handle() throw()rn rn rem_ref();rn rn size_t count() const rn rn return *use;rn rn T* get()const rn rn return ptr;rn rn T& operator*() throw(std::runtime_error); rn T* operator->() throw(std::runtime_error); rnprivate:rn T* ptr;rn std::size_t *use;rnrn void rem_ref();rn template friend class Handle;rn; //Handlrn//-----------------------------------------------------------------------//rntemplate rntemplate rninline Handle& Handle::operator=(const Handle &rhs)rnrn ++*rhs.use;rn rem_ref();rn ptr = rhs.ptr;rn use = rhs.use;rn return *this;rnrnrntemplate inlinernT& Handle::operator*() throw(std::runtime_error)rnrn if (ptr)rn rn return *ptr;rn rn throw std::runtime_error("dereference of unbound Handle");rnrntemplate inlinernT* Handle::operator->() throw(std::runtime_error)rnrn if (ptr)rn rn return ptr;rn rn throw std::runtime_error("access through unbound Handle");rnrntemplate inlinernvoid Handle::rem_ref()rnrn if (--*use == 0)rn rn delete ptr;rn delete use;rn rnrn#endifrn[/code]rn[code=c]#include rn#include rn#include "handle.h"rn#include rnusing namespace std;rnclass basernrnpublic :rn virtual ~base()rn rn cout<<"base"<& func(Handle& a)rnrn cout< > v;rn Handle b(new test);rn Handle c(b);//这里正确rnrn v.push_back(b);rn ///编译错误 是不是因为不进行从派生类到基类的转换,应如何改写?rnrn Handle a(func(b));///编译错误rn rnrn getchar();rn return 0;rnrn[/code]
关于智能指针:
1。我在VC里用一个ACTIVEX,采用#import 的方法,其中接口调用用了智能指针,可是每次程序在退出时候都会报错,说内存不可读。有那位大哥帮我一吧。rn2。我采用Insert 方法加入ACtiveX的话,实际上会生成几个接口类,可是我需要的是接口的IDispatch指针,请问如何得到?rnrnrn高分相送!!!!!
关于智能指针!
智能指针的发展史: 先从RAII说起:      RAII(Resource Acquisition Is Initialization) 资源分配即初始化,定义一个类来封装资源的分配和释放,在构造函数完成资源 的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释 放。 auto_ptr: 实际上,为了正确地管理资源,人们进行了包括但不仅限于flag
关于智能指针(下)
关于智能指针(下) 前面我们简单介绍了前三种智能指针AutoPtr,ScopedPtr,SharedPtr,接着我们来看第四种WeakPtr WeakPtr WeakPtr又称弱指针,它不能单独使用,不能独立管理资源,需要和SharedPtr结合起来解决SharedPtr中存在的循环引用的问题。它的实现原理和SharedPtr非常类似,只是二者的引用计数有一些差别。 在boost库中s...
关于智能指针中的内存释放问题?
void main()rnrn vector *pstr = new vector;rn vector *pint = new vector;rn auto_ptr< map< vector*, vector* > > autoPtr( new map< vector, vector > );rn typedef map< vector*, vector* > >::value_type value_type;rn autoPtr->insert( value_type( pstr, pint ) );rnrnrn在main结束时还要手动释放掉pstr和pint所指向的内存吗?
急!关于内存回收+智能指针的问题~~
请为一工程项目制定一机制,该机制可以自动完成内存的自动回收,可以参考auto_ptr的设计。
一个关于ADO智能指针的问题
我刚开始用ADO,但是我发现_ConnectionPtr m_pConnection;被定义了两次,分别在adoDLG.h和ado.h里定义了,而且都是public的,我想是我的基础不好了,麻烦各位帮我解答rn还有,用的时候编译器怎么知道哪个是哪个的呢?
1.1 c/c++智能指针
c/c++智能指针 (直接上代码) template &amp;lt;typename T&amp;gt; class sharePtr { public: sharePtr() { instance_ = new T(); } ~sharePtr() { delete instance_; } // 为了像指针一样使用 T* operator-&amp;gt;() { return i...
关于智能指针的问题,望指教!!!
智能指针的点操作符和->操作符用法有何区别?rn还有,为什么指针可以使用点操作符?这有背C++语言的规范啊?!
C语言智能指针
智能指针 C
关于智能指针的使用问题请教
class ZookeeperManager ;rntypedef std::function WatcherFunType;rntypedef std::function VoidCompletionFunType;rnrnrnclass ZookeeperManagerrnrnpublic:rnrn ZookeeperManager();rnrn /**rn *rn * @param const std::string & hosts 格式:ip:port,ip:portrn * @param const std::string & root_path 根节点必须为有效路径,为了支持路径填写相对或者绝对路径rn * @retval int32_trn * @author moonrn */rn int32_t Init(const std::string &hosts, const std::string &root_path = "/", const clientid_t *client_id = NULL);rnrn virtual ~ZookeeperManager();rnrn /** 连接,阻塞操作,直到连接成功或者超时,超时后,也许会连接成功,更加稳妥的做法是,重新连接rn *rn * @param const std::string & hostsrn * @param std::shared_ptr global_watcher_funrn * @param int32_t recv_timeout_msrn * @param uint32_t conn_timeout_ms 连接超时时间,为0表示永久等待rn * @retval int32_trn * @author moonrn */rn int32_t Connect(std::shared_ptr global_watcher_fun, int32_t recv_timeout_ms, uint32_t conn_timeout_ms = 30000);rnrn /** 获得ClientIDrn *rn * @retval const zookeeper::clientid_t *rn * @author moonrn */rn const clientid_t *GetClientID()rn rn return &m_zk_client_id;rn rn;rnrn采用如下使用方式,不能编译通过,不知道错在什么地方,如何定义使用才能通过rnrnusing namespace zookeeper;rnrnbool WatcherFun(ZookeeperManager &zookeeper_manager, int type, int state, const char *path)rnrn bool bRet = false;rnrnrn return bRet;rnrnrnint main()rnrn ZookeeperManager zkMana;rn zkMana.Init("127.0.0.1:2181");rn auto pFun= std::bind(WatcherFun, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3,std::placeholders::_4);rn// std::shared_ptr pFun =make_shared(new WatcherFun);rn /*std::shared_ptr*/ // pFun = std::bind(WatcherFun, zkMana, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);rn zkMana.Connect(pFun,10);rn return 0;rn
************************关于前置申明 && 智能指针的问题
最近遇到一个问题,求支教rnrn如果类A已经用智能指针包了一层,如下:rnclass TestArnrnrnrnrnrntypedef boost::shared TestAPtr;rnrn=====================================================================rnrn在另外一个类里面需要用到这个类A的前置申明,该怎么写这个前置申明了?rnrn
C 语言实现智能指针
C 语言实现指针的自动释放
关于com组件的智能指针问题
CComPtr < IFun > spFun 是表示模板吗?是不是把IFUN参数传给SPFUNrn
关于智能指针的问题,求助高手
因为项目的需要,我自定义了一个简化的指针类方便在程序结束时候清理原始指针所指向的数据.但是程序在析构函数的时候报错(User breakpoint called from code at 0xxxxxxxxx),代码如下:rntemplaternclass IVPoint rnrnprivate:rn T* m_pIVPoint;rn rnpublic:rn IVPoint()rn rn m_pIVPoint = NULL;rn rn IVPoint(T* pIV) m_pIVPoint = pIV; rn ~IVPoint()rn rn if (m_pIVPoint) rn rn imaqDispose(m_pIVPoint);rn rn rn rn T* GetInst()const return m_pIVPoint; rn T* operator->() return m_pIVPoint; rn T& operator*() return *m_pIVPoint; rn rn T* operator=(T* pIV)rn rn if (m_pIVPoint && (m_pIVPoint != pIV)) rn rn imaqDispose(m_pIVPoint);rn rn return (m_pIVPoint = pIV); rn rnrn IVPoint& operator=(const IVPoint& IV )rn rn if (IV.m_pIVPoint != m_pIVPoint) rn rn imaqDispose(m_pIVPoint);rn m_pIVPoint = IV.m_pIVPoint;rn rn rnrn return *this;rn rnrn int operator==(T* pIV)const return (m_pIVPoint == pIV); rn int operator!=(T* pIV)const return (m_pIVPoint != pIV); rn rn;rn请高手指教到底错在哪里? rn注: imaqDispose()是一个清理指针所指向数据的函数,在别处使用的时候没有问题. 谢谢各位啦!
关于智能指针和set容器问题
[code=c]#includern#includern#includern#includern#includern#includernrnusing namespace std;rnusing line_no = vector::size_type;rnint main()rnrn map>> wm;rn auto lines = wm["jack"];rn lines.reset(new set);rnrn for (int i = 0; i < 4; i++)rn rn lines->insert(i);rn rnrn cout << wm.begin()->second->size() << endl;rnrn[/code]rnrnrn问题:我想输出map容器中第一个pair元素的值对象set的元素个数,但运行起来段错误,不知道哪里出了问题,请求指点
C 实现智能指针
mbuf
关于C语言字符串初始化问题的探讨
关于字符串初始化问题的探讨
关于C语言中一维数组初始化的问题
第一组代码:rn #include rn int main()rn rn int i,a[10];rn rn for(i=0;i<10;i++)rn printf("第%d个数:%d\n",i+1,a[i]);rn return 0rn rn 书上说这个不行,需要将a[10]改成a[10]=*******,但下面一段代码行但我觉得与第一组是一样的rn 第二组代码:rn #include rn int main()rn rn int i,a[10];rn rn for(i=0;i<10;i++)rn a[i]=i+1;rn for(i=0;i<15;i++)rn printf("第%d个数:%d\n",i+1,a[i]);rn return 0rn rn 为什么第二种代码中的a[10]不改成a[10]=*****
关于字符数组初始化问题[C语言]
C语言定义并初始化字符数组方式:rnrn char str1[10] = 0;rn char str2[10] = "";rnrn请问:rn 这两种的效果是一样的吗?
关于c语言指针的初始化问题
有这样一段代码rnrn[code=c]msg_t * GetData() rn msg_t *msg;rn if (msg == NULL)rn rn printf("%s %s: msg is NULL\n", TAG, __func__);rn rn return msg;rn[/code]rnrn请问返回值是NULL吗?为什么
关于c语言graph初始化问题
我用c语言graphics.h库里的函数写了个画点程序,为什么一样的码,一样的编译器.在不同的机子上运行结果不同? rnrn在有些机子上运行有了我要的结果,但是在有些机子运行后,dos窗口一闪就没了?是初始化问题?rnrn加了getchar();语句的.rnrn比如rn#include"stdio.h"rn#include"graphics.h"rnmain()rnrnint i;rnint gbdriverETECT;rnint gbmode;rndetectgraph(&gbdriver,&gbmode);rnregisterbgigraph(EGAVGA_driver);rninitgraph(&gbdriver,&gbmode,"");rncleardevice();rnfor(i=1;i<190;i++)rnputpixel(20,i,1);rngetchar();rnclosegraph();rnrnrn这是画蓝线..我都被弄怕了..
关于c语言结构体初始化的问题
程序如下:rn#include rn#include rnrnstruct Booksrnrn char title[50];rn char author[50];rn int book_id;rn;rnrnint main()rnrnrn struct Books Book[2]; rn int i,j;rn rn /*给结构体数组赋值*/rn for (i=0;i<=2;i++)rn rn scanf("%s %s %d\n", &Book[i].title, &Book[i].author, &Book[i].book_id);rn rn /*显示结构体内容*/rn for (j=0;j<=2;j++)rn rn printf( "Book[%d] title : %s\nBook[%d] author : %s\nBook[%d] book_id : %d\n", j, Book[j].title,j, Book[j].author, j, Book[j].book_id);rnrn rn return 0;rnrnrn控制台输入:rnMIke jjkjk 100rnJoe kjkjk 89rnJack jjjjk 77rnjkhj jhjhj jhjhk (此处如果不输入,程序无法进行,也是问题所在。赋值的地方循环三次,此处却要求输入四组值)rnrn控制台能正确显示;rn求高手告知原因
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件