一个C#问题,今天看书看到这里有些疑问,关于堆栈存贮

书里是这样写的,**对于引用类型的任何对象,他的所有数据成员都是存放到堆中的,无论是值类型还是引用类型**,文中举了一个例子:假设有一个引用类型的实例mytype,里面有两个成员,一个值类型和一个引用类型,这两个都是存贮在堆中的。我的疑问就是我声明了一个类(类是引用类型没错吧),按照他的所说,那不都是存贮在堆中了?

1个回答

没错。所有的类,以及类里面定义的成员变量(无论是值类型还是引用类型)都在堆上。
只有函数的局部变量,并且这个变量是值类型,才是存储在堆栈上。

caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复Zero_LJ: 当然
3 年多之前 回复
K20132014
Zero_LJ 谢谢你!!!如果在class A中定义int a变量也是存贮在堆中吗?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
看书的疑问,,,,,,??????
在《Essential C++》的P116页,rn讲的是“静态成员函数”,他先具了个例子:rnbool Triangular::is_elem( int value )rnrn .......................rnrn下面书中说到:rn“然而,上述的is_elem()并不存取任何non-static data member。它的运行和任何对象都没有任何关联,rn因而应该可以很方便地以一般non-member function的方式来调用。但是我们不能这样写:rn if ( is_elem(8) ).....rn 因为这样一来就没有办法让编译器或程序阅读者知道我们调用的究竟是哪一个is_elem().”rnrn上面这段话我不太理解,为什么不能知道是哪一个is_elem()?rnrn存在什么样的歧义呢???
小白关于堆栈疑问..
这样的话:rnint a = 3;rn int b = 3;rn 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。这时,如果再令a=4;那么编译器会重新搜索栈中是否有4值,如果没有,则将4存放进来,并令a指向4;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b的值。要注意这种数据的共享与两个对象的引用同时指向一个对象的这种共享是不同的,因为这种情况a的修改并不会影响到b, 它是由编译器完成的,它有利于节省空间。而一个对象引用变量修改了这个对象的内部状态,会影响到另一个对象引用变量。rnrn那么:rnrnint a=3;rnint b=a;rn是怎样一个过程呢...rn
关于& 有些疑问
就是看见有个帖子号称东北三省无人能做出来吗? rn 问题是rn int a[5]=1,2,3,4,5; int *ptrrn &a 这里 a 本来就是数组的首地址,在取地址,是什么呀?书上好象没有呀?还有ptr[-1]这里书上也没讲可以用负数是什么意思呀?rn 根据答案来看,这里好象&a 只是改变了a的类似汇编变量的类型属性?是不是呀?
关于观察者模式有些疑问 = =
观察者设计模式能够解决一对多的问题 但是能不能解决多对多的问题?rnrn比如 A被C、D、E观察,B被C、D、E观察,A与B没有任何关系rn问 这种情况该怎么处理?
看书看到参数的ref
说函数被调用后,函数中的值已经被改变了。如果我不用控制台做,像我这样不用控制台怎么看函数中的值已被改变了?rnrn[code=C#]static int refs(ref int myint,ref int myat)rn rn return myint * myat;rn rn private void button1_Click(object sender, EventArgs e)rn rn int sys = 3, pop = 2;rn int sos;rn sos=refs(ref sys, ref pop);rn label1.Text = sos.ToString();rn rn[/code]
今天看了个高手的帖子有些疑问
今天看了个高手的帖子有些疑问!摘录如下:rnrn......rn关于活动对象有如下情况可能会导致出现游离信号出现rn1.没有调用CActiveSchedule::Add(this);把活动对象加到活动调度器中。rn2.没有调用SetActive把活动对象激活。破坏规则(2)rn3.在活动对象外调用异步函数后,没有用User::WaitForRequest()截获异步函数完成信号量。信号量进入循环却找不到活动对象,破坏规则1。rn4.同时一个活动对象中同时调用两个异步函数。如:InvokeAsyncFunc1();SetActice();InvokeAsyncFunc2(); SetActive();第一个异步函数结束后,执行完回调函数RunL()后,会把iActive置为EFalse,这时第二异步函数的结束信号进入时,却发现活动对象不是“活”的,破坏规则2。所以在一个活动对象不能同时调用多个异步函数。rnrn..............rnrn问题:rn请问:第三条怎么理解?必须这样码?我看很多代码怎么没有这样做!我不大明白为什么?rn
关于C#的一个疑问
为什么现在的大型游戏没有用C#做的,一般用的是C++ 难道C#做不了?还是效率太低?
关于堆栈的一个问题
在调用子函数时,子函数的值传递参数会被拷贝到栈中,子函数退出时也清空栈中用到的这些临时数据。我不清楚:在子函数中用new在堆中分配的空间会不会随着子函数的退出而被回收呢?还是说不调用delete就永远不会被回收?
关于堆栈的一个问题?
我用链表实现堆栈这个数据结构,具体程序如下:rntemplaternclass LinkedStack;rnrntemplaternclass Nodern friend LinkedStack;rn private:rn T data;rn Node *next;rn;rnrntemplaternclass LinkedStackrn public:rn LinkedStack();rn ~LinkedStack();rn bool IsEmpty() const return top==0;rn bool IsFull() const;rn T Top() const;rn LinkedStack& Add(const T& x);rn LinkedStack& Delete(T& x);rn private:rn Node *top;rn;rnrntemplaternLinkedStack::LinkedStack()rnrn top=NULL;rnrnrnrntemplaternLinkedStack::~LinkedStack()rnrn Node *pTemp;rn while(top)rn pTemp=top->next;rn delete top;rn top=pTemp;rn rnrntemplaternbool LinkedStack::IsFull() constrnrn try rn Node *p=new Node;rn delete p;rn return false;rn rn catch (xalloc) return true;rnrntemplaternT LinkedStack::Top() constrnrn// if(IsEmpty()) throw OutOfBounds();rn return top->data;rnrntemplaternLinkedStack& LinkedStack::Add(const T& x)rnrn Node *p=new Node;rn p->data=x;rn p->next=top;rn top=p;rn return *this;rnrntemplaternLinkedStack& LinkedStack::Delete(T& x)rnrn// if (IsEmpty()) throw OutOfBounds();rn x=top->data;rn Node *p=top;rn top=top->next;rn delete p;rn return *this;rnrn这个程序编译没有错误,但我用它具体实现一个应用的时候,运行就会出现错误rn经过调试发现错误出在构造函数上,但不知道怎么改了,也不知道为什么,大下们帮帮我
一个关于堆栈的问题。
为什么下面的程序在link的时候,总是提示no stack segment 的信息,我已经建立了堆栈段呀?rnrnrndata segmentrn s1 dw 32 dup ('A')rndata endsrnrns_seg segmentrn db 32 dup ('B')rn s2 label wordrns_seg endsrnrncode segmentrn assume cs:code,ds:data,ss:s_segrn rn start:rn mov ax,s_segrn mov ss,axrn mov ax,s2rn mov sp,axrn push dsrn sub ax,axrn push axrn rn mov ax,datarn mov ds,axrnrn int 21hrncode endsrnend startrn
一个关于堆栈的问题
可以编译 运行时停止工作rn求教啊rn[code=c]#include rn#include rn#define StackSize 10rntypedef structrn int data[StackSize];rn int top;rn SeqStack;rnvoid InitStack(SeqStack *S)rnrn S->top=-1;rnrnint StackEmpty(SeqStack *S)rnrn return S->top==-1;rnrnint StackFull(SeqStack *S)rnrn return S->top==StackSize-1;rnrnrnvoid Push(SeqStack *S,int x)rnrn if(StackFull(S))rn printf("Stack overflow");rn S->data[++S->top]=x;//栈顶指针加1后将x入栈rnrnchar Pop(SeqStack *S)rnrn if(StackEmpty(S))rn printf("Stack underflow");rn return S->data[S->top--];//栈顶元素返回后将栈顶指针减1rnrnSeqStack ReverseString(SeqStack *S) //逆转函数rnrn int i,A[StackSize];rn SeqStack *K;rn InitStack(K);rn for(i=0;!StackEmpty(S);i++) //Push(K,Pop(S));rn A[i]=Pop(S);rn for(i=0;A[i]!='\0';i++)Push(S,A[i]);rn //return *K;rnrnvoid PrintStack(SeqStack *S)rnrn int i;rn printf("栈中元素为:");rn for(i=S->top;i>=0;--i)rn printf("%d ",S->data[i]);rn printf("\n");rnrnint main()rnrn SeqStack *Stack;rn char ch;rn printf("ENTER");rn InitStack(Stack);rn while((ch=getchar())!='\n')Push(Stack,ch);rn PrintStack(Stack);rn ReverseString(Stack);rn PrintStack(Stack);rn system("pause");rn return 0;rnrn[/code]rnrn
堆栈疑问
请问,在c++builder中有堆栈的使用吗?rn我在一个控件单击事件中要用到堆栈,应该怎么做啊?比如堆栈的定义、创建要放到哪里呢。还是CBD里没有这个啊?……请教啊。急!
深入浅出mfc看书疑问?
P109下部为什么用m_pBaseClass 而不是m_pNextClass。谢谢!rnp327::CreateWindowEx为何触发WM-CREATE而不是调用PreCreateWindow函数!(如p282说的那样!)rnp388中部pClass=pClass->m_pNextclass与p109是否矛盾!rn
mfc深入浅出看书疑问?
p97 中间程序的倒数第6行PASCAL*是什么意思?rnP109下部为什么用m_pBaseClass 而不是m_pNextClass。谢谢!
C#关于堆栈的简单问题
[code=csharp]string c = "aa";rnstring d = c;rnd = "dd";rnConsole.WriteLine("c:0 d:1", c, d);[/code]rnrn结果 c:aa d:ddrnrn[code=csharp]Circle cc = new Circle(42);rnCircle dd = cc;rndd.f = 43;rnConsole.WriteLine(cc.f + "_" + dd.f);[/code] rnrn结果 43_43rnrnstring是引用数据类型,因此字符串c的值“aa”存放在堆中,后面定义了字符串d,并将字符串c的引用地址传给了字符串d,因此字符串c和字符串d都指向了值“aa”,而此时修改字符串d的值为“dd”,按说字符串c和字符串d都是指向堆中同一片区域(这个根据上面的例子2得出的),此时修改了字符串d的值,而字符串c和字符串d的引用地址指向是一样的,那为什么会出现字符串c和字符串d的值不同?如果说字符串c和字符串d的引用地址发生了改变,那例子二中的引用地址为何没有改变?
调用存贮过程疑问
try rn String st = "call pro_temp_customer()";rn callsta = con.prepareCall(st);rn System.out.println(callsta.execute()); rn if(callsta.execute()==true) rn //存贮过程成功rn rn这是调用的程序,不知道写的对不对,这个pro_temp_customer 是把临时表的数据更新或者删除到正式表,没有需要返回什么函数。只是调用执行,但是到了 callsta这步停住了,不走了,求解
今天看到一个创建线程池实例的代码,有个疑问?
package com.desksoft.sms.thread;rnrnimport java.util.concurrent.LinkedBlockingQueue;rnimport java.util.concurrent.ThreadPoolExecutor;rnimport java.util.concurrent.TimeUnit;rnrnrnpublic class MyPoolFactory rn private static class MyPoolHolder rn /*rn corePoolSize: 线程池维护线程的最少数量rn maximumPoolSize:线程池维护线程的最大数量rn keepAliveTime: 线程池维护线程所允许的空闲时间rn unit: 线程池维护线程所允许的空闲时间的单位rn workQueue: 线程池所使用的缓冲队列rn handler: 线程池对拒绝任务的处理策略 rn **/rn rn public static ThreadPoolExecutor threadPool rn = new ThreadPoolExecutor(2, 10, 3, rn TimeUnit.SECONDS, new LinkedBlockingQueue(10), rn new ThreadPoolExecutor.DiscardOldestPolicy());rn rnrn public static ThreadPoolExecutor getMyPool() rn return MyPoolFactory.MyPoolHolder.threadPool;rn rn rn public static ThreadPoolExecutor setMyPool(ThreadPoolExecutor pool) rn MyPoolFactory.MyPoolHolder.threadPool = pool;rn return pool;rn rnrnrnrnrnpackage com.desksoft.sms.thread;rnrnimport java.util.concurrent.BlockingQueue;rnimport java.util.concurrent.LinkedBlockingQueue;rnrnimport com.desksoft.sms.sdcommand.SendCommand;rnrnpublic class MyQueueFactory rn public static class MyQueueHolderrn public static BlockingQueue queue=new LinkedBlockingQueue(500);rn rn rn public static BlockingQueue getMyQueue()rn return MyQueueFactory.MyQueueHolder.queue;rn rnrnrnrn这里为什么把创建线程池的代码放在一个静态内部类里面,这个是有什么原因吗?创建缓冲队列,也是放在一个静态内部类里面,这有什么好处吗?
今天看到一个WebSphere开发者社区
网址是http://www.websphere.orgrn里面有很多group,各个国家和地区的,就是没有中国,可以开新的组。大家说怎么办。
求教一个问题,今天刚看到的
"select * from [Fy_Posts"&PostsTableName&"] where ThreadID="&ThreadID&" order by id"rn这个语句中的&是什么意思,具体的作用是什么呢?求给为大大帮忙解释下
有些疑问
请教各位一下哈:rn1:myEclipse8.5直接导出带有mysql数据库连接的程序,那导出来的jar里面会不会自动的把mysql的jar放进去啊?rn2:连接mysql数据库的程序一般都是如何把自己的程序移植到别的电脑上的啊(如何处理别人电脑上没有对应的数据库和没有rn 安装mySql软件)?rn3:比如:自己做的游戏项目里面的src下面有一个image文件夹,里面放了一些图片,为什么我导出项目后变成jar文件后,就rn 没法找到图片了,只有让我自己把bin/image文件夹解压到同级目录下才能正常显示图片啊? 我用的读取图片的方式是 rn ImageIO.read(new File());
关于OLEDB驱动有些疑问!!
这里是对OLEDB驱动的分析。有两台计算机器:rnrn甲: rnWindows2000 server+SP4rn数据驱动: rnMicrosoft Data Access Components (MDAC) 2.7.其中msdasql.dll 其文件修改时间2006年2月21日, 22:08:08.rnSql2000+ SP4rnVB6rnVF6rnrnrn乙: rnWindowsXP+SP2rn数据驱动: rnMicrosoft Data Access Components (MDAC) 2.7.其中msdasql.dll 其文件修改时间大概是2006年1月2日.rnSql2000+ SP4rnVB6+SP6rnVF6rnrn在查询分析器同样执行下面语句, 在甲上能够通过,但是乙通不过,非常邪门!! rnselect LURUFCODE from openrowset('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB= e:\data',rn'select LURUFCODE from C26') as arnrn服务器: 消息 7341,级别 16,状态 2,行 1rn未能得到列 '[a].lurufcode' 的当前行的值(从 OLE DB 提供程序 'MSDASQL' 中)。rn由于数据值溢出了提供程序所用数据类型的取值范围,转换失败。rn[OLE/DB provider returned message: 多步 OLE DB 操作产生错误。rn如果可能,请检查每个 OLE DB 状态值。没有工作被完成。]rnOLE DB 错误跟踪[OLE/DB Provider 'MSDASQL' IRowset::GetData returned 0x80040e21: Data status returned from the provider: [COLUMN_NAME=lurufcode STATUS=DBSTATUS_E_DATAOVERFLOW]]。rnrn问题: 对于OLEDB提供的Driver=Microsoft Visual FoxPro Driver, 为什么在甲上能兼容LURUFCODE呢,在乙就不能兼容. 同样都是2.7中的驱动.难道这种数据的兼容还和系统有关. 真是百思不得其解!!
关于标志寄存器有些疑问
就是进行例如加减运算的时候,怎么断定他是有符号数还是无符号数呢.例如:rnrn一个数又可以表示有符号,也可以表示无符号,该怎么判断呢?rnrn很是苦恼呀...rnrn怎么断定它进行的是有符号的运算还是无符号的运算喃..rnrn可能表示得不是很清楚.rnrn希望大家帮忙解决一下这个关于一个即可以表示有符号数,也可以表示无符号数,我们应该怎么判断..
关于在存贮过程中统计页数的疑问
我看到很多存贮过程中求总页数都是这样写的:rnSET @PageCount=(@RecordCount+@PageSize-1)/@PageSizernrn可我怎么看都不明白,这样如何算出总页数?例如:rn@RecordCount=123rn@PageSize=10rn代入表达式中:rnset @PageCount=(123+10-1)/10rn得到的结果13.2啊
线性代数关于齐次线性方程组的问题,有些疑问
设A为m*n矩阵,齐次线性方程组AX=0仅有零解的充分必要条件是()rnA) A的列向量线性无关rnB) A的列向量线性相关rnC) A的行向量线性无关rnD) A的行向量线性相关rn分析:B,D显然排除rn但是对于A,C,为什么是列向量无关,不是行向量呢rn
看书遇到的关于存储过程两个疑问
利用PUS数据库创建存储过程rncreate procedure mytestrn@au_id id(11)rnasrnif not exists (select * from authors where au_id = @au_id)rn return -1rnselect au_id from @authors where au_id = @au_idrn returnrnGOrn然后调用该存储过程rndeclare @status intrnexec mytest = mytest '172.32.1176'rnif @status=-1rnprint '发生错误'rngorn但是总有错误提示如下rn服务器: 消息 2716,级别 16,状态 3,过程 mytest,行 0rnColumn or parameter #1: Cannot specify a column width on data type id.rnParameter '@au_id' has an invalid data type.rn服务器: 消息 170,级别 15,状态 1,行 2rnLine 2: Incorrect syntax near '='.rn第二个问题:是关于这个存储过程中的IF语句的rnif not exists (select * from authors where au_id = @au_id)rn return -1rn这句在调用存储过程时,是存在该记录返回-1,还是不存在返回-1rn书上说是存在返回-1,我觉得是不存在返回-1rn谁给俺讲讲,什么是NOT EXISTS()rn没分了,就20,先谢谢啊
一个关于namespace的问题??今天看程序时看到的!!
using System;rnusing System.Drawing;rnusing System.Collections;rnusing System.ComponentModel;rnusing System.Windows.Forms;rnusing System.Data;rnrnnamespace DataCommandsrnrn public class frmDataCmds : System.Windows.Forms.Formrn rn private DataCommands.dsMaster dsMaster1;rn .....rnrn我搞不懂 private DataCommands.dsMaster dsMaster1;这形式是什么意思?在一个namespace中可以自己调用自己,那么这么做dsMaster又代表什么?rnrn
今天看到一个关于dataGridView1.Controls.Clear的问题,不明白求解
private void Form1_Load(object sender, EventArgs e)rn rn rn for (int i = 0; i < 5; i++)rn rn TextBox lv = new TextBox();rn lv.Text = "1231231231";rn lv.Left += i * 30;rn lv.Top += i * 10;rn dataGridView1.Controls.Add(lv);rn rn rn rnrn private void button1_Click(object sender, EventArgs e)rn rn dataGridView1.Controls.Clear();rn rnrn本来想回答别人问题,所以测了一下,发现确实有问题rn按下BUTTON后dataGridView的控件无法一次性删除,要按好几次才行,求问是不是编辑器的问题还是
关于C# Dictionary 的一个疑问
有个类 User:rn[code=csharp]rn public class Userrn rn public string id;rn public UserType userType;rn public UserInfo userInfo;rn rn[/code]rnrn然后实现 IEqualityComparer 接口:rn[code=csharp]rn public class UserEqualityComparer : IEqualityComparerrn rn public bool Equals(User user1, User user2)rn rn if (user1.id == user2.idrn && user1.userType == user2.userType)rn return true; rnrn else return false; rn rnrn public int GetHashCode(User user)rn rn return (user.id + user.userType.ToString()).GetHashCode();rn rn rn[/code]rnrn将 User 做为 Dictionary 的键来使用:rn[code=csharp]rn private UserEqualityComparer userComparer = new UserEqualityComparer();rn private Dictionary onlineIndex = new Dictionary(userComparer);rn[/code]rnrn之后看到了这篇文章: [url=[color=#3366FF]http://www.cnblogs.com/sun/archive/2010/01/13/1647241.html[/color]][/url] 当心Dictionary带来的一种隐式内存泄漏rnrn在运行过程中,会变化的只有 UserInfo,所以我在想,如果按照我实现的 GetHashCode 方法,还会出现这种隐式内存泄露吗?rn我觉得不会rn
关于堆栈的一个诡异的问题
我雅栈的数据,马上出栈就不是原来的数据了rn图中我刚刚执行了rn[code=Assembly]push word prt 50Hrnpop eax[/code]rn但是出来的就不是50了,诡异还是程序有问题rn[img=http://hi.csdn.net/space-2850505-do-album-picid-512477-goto-down.html][/img]
关于存贮过程的问题!
using System;rnusing System.Collections;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Web;rnusing System.Web.SessionState;rnusing System.Web.UI;rnusing System.Web.UI.WebControls;rnusing System.Web.UI.HtmlControls;rnusing System.Data.SqlClient;rnrnnamespace test7rnrn /// rn /// WebForm1 的摘要说明。rn /// rn public class WebForm1 : System.Web.UI.Pagern rn protected System.Web.UI.WebControls.DataGrid dgOrders;rn SqlConnection myConn;rn private void Page_Load(object sender, System.EventArgs e)rn rn // 在此处放置用户代码以初始化页面rn myConn=new SqlConnection("Data Source=(local);database=pubs;uid=sa;pwd=52451");rn if(!IsPostBack)rn BindGrid();rn rn public void BindGrid()rn rn SqlCommand cm=new SqlCommand("RepTq1",myConn);rn cm.CommandType=CommandType.StoredProcedure;rn cm.Connection.Open();rn SqlDataReader dr=cm.ExecuteReader(); //这里提示:rn不支持 COMPUTE BY 语句。 rn说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 rnrn异常详细信息: System.InvalidOperationException: 不支持 COMPUTE BY 语句。rn dgOrders.DataSource=dr;rn dgOrders.DataBind();rn cm.Connection.Close();rn rn rnrn
问一个关于堆栈的问题
大家都知道,值类型是保存在堆栈里的,那在申明一个引用类型的对象时,堆栈里是怎样的?rn比如:Class1 c1 这个时候是在堆里还是堆栈里划出了一块空间?rn c1=new Class1();实例化这个对象后,我知道是在堆里保存了一个堆栈的引用,值还是放在堆栈里的.rn
一个关于超大堆栈得问题
我在编程时设计了一个二维数组,它在执行时需要一个很大得堆栈,至少10M,但是无法提供,不知道该怎么解决,请问各位有什么方法吗?谢谢!!!
有一个关于堆栈的问题???
有一个关于堆栈的问题,不知道我理解的对不对.比如说有一段程序:rnrn 地址 代码rn rn 100 int x = 5;rn 101 int y = 7;rn 102 cout<
关于在家看书的问题
你在家会看书嘛,我基本不会,除了晚上睡觉前看看,记得以前晚上晚上看书时间还多一些,现在早上起的太累,晚上基本都不敢看书了,其他时间,回到家基本都是看看电影度过了,实在无聊也是去看电视,现在的我,确实没有一点在家看书的欲望,还是自己太懒惰,还是环境太舒服了,还是要走出去看看才知道,其实我还是想多用点时间去学习的. 突然想好好倒腾下Hibernate和Spring,现在基本处于what++,ho...
看书的问题(关于位图)
为什么位图总是要加载内存设备环境中,而不能加载到其它的设备环境中.rn《Windows程序设计》里只说了要加载,没给出具体的原因。
请教关于堆栈的一个问题
最近刚开始学数据结构,看到堆栈在变换顺序时,有些特殊的顺序是不能变换出来的。比如有三个元素A,B,C,要依次入栈,CBA这个顺序是不能出现的。rn当有四个元素ABCD时,我挨个试了一下,有14种可以,10种不可以。rn然后我想知道当有N个元素的时候,有多少种顺序可以实现,多少种不可以。rn这好像更像是一个数学问题了···
今天看书遇到的两个问题,求教。
问题1rn rn在C程序设计语言(中文版)第26页有这样一句:rnrn如果expr1 和 expr2是表达式,那么rnrnexpr1 op= expr2rn 等价于:expr1 = (expr1) op (expr2)rnrn我的问题是这里的表达式expr1指哪种表达式?除了单变量还有其他的可能么?rnrnrn问题2rnint x = 1, y = 2, z = 3;rnif (x > y > z)rn ...rnif括号中的语句是怎么执行的?[/align][/align]
关于存贮过程的问题
下面的存贮过程没有带参数,应该很简单吧,但是...rn我写的一个很简单的存贮过程:rncreate or replace procedure P_YLFTOJTJ rnasrnbeginrninsert into tt(bs,lxbh,lbbh,ffrq) values(8,1,1,sysdate);rnend P_YLFTOJTJ;rn可以编译执行,没有问题,但是我发现在里面加上rncreate or replace procedure P_YLFTOJTJ rnasrnbeginrninsert into tt(bs,lxbh,lbbh,ffrq) values(8,1,1,sysdate);rnselect * from tt;rnend P_YLFTOJTJ;rn就有问题,为什么加上select就会出错?rn最简单的一个select语句的存贮过程也有问题:rncreate or replace procedure P_YLFTOJTJ rnasrnbeginrnselect * from tt;rnend P_YLFTOJTJ;rn是不是在过程中不能用select语句?
关于看书练习的问题
我看完了plus,现在看primer,看完第一部分了,感觉第一部分就是复习了一下整个的知识点,觉得不太难,可是都说难,用这这本书晋级用,是不是后面就的部分就开始了?我是不是该在这个阶段集中做点练习了?primer这本书里面都是小练习题,没有正式的完整的工程做啊,[color=#FF0000]哪里有好点的适合新手的完整的有点针对性的小工程的题啊?有好点答案的那种[/color],自己写出来一个也不知道有什么不足
2016.12.12 今天偶尔看到一个,今天晚上搞一个
http://tieba.baidu.com/p/4845476031
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法