在这个问题中,初始化器用于将指针设置为null.而不是使用值的0值0L.我已经读过,应该完全0使用空指针,因为精确的空指针表示是特定于实现的.
可以使用0L设置指针为null导致移植时出现问题吗?
我对 C++ 比较陌生,我想知道在以下情况下是否复制了结构:
struct foo {
int i;
std::vector<int> bar;
}
class Foobar {
foo m_foo;
void store(foo& f) {
this->m_foo = f;
}
}
void main() {
Foobar foobar;
{
foo f;
f.i = 1;
f.bar.insert(2);
foobar.store(f);
}
// will a copy of f still exist in foobar.m_foo, or am I storing a NULL-Pointer at this point?
}
Run Code Online (Sandbox Code Playgroud)
我问这个的原因是我最初是一个 .NET 开发人员,如果你将它们传递给一个函数(而类不是),那么在 .NET 结构中将被复制。我很确定如果 store 没有被声明为通过引用获取 f ,它会被复制,但我无法更改此代码。
编辑:更新了代码,因为我不知道这vector.insert会影响我的问题。在我的情况下,我将结构存储为类中的成员,而不是向量。所以我的问题真的是:会f被复制this->m_foo = f;吗?
我有一个简单的Android应用程序.layout文件夹显示activity_main.xml文件和fragment_main.xml文件.在那个fragment.xml文件中,我放置了一个名为buttonTest的按钮.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.snapvest.thunderbird.app.MainActivity$PlaceholderFragment">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TEST"
android:id="@+id/buttonTest"
android:layout_gravity="center_horizontal" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在MainActivity.java文件中,我试图获得对该buttonTest的访问权限.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
// Get access to the buttons
final Button buttonTest = (Button)findViewById(R.id.buttonTest);
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好.但是当我运行它时,buttonTest变量返回为空指针.为什么找不到buttonTest对象?
我只是创建一个基本的文件处理程序.代码是这样的:
#include <stdio.h>
int main()
{
FILE *p;
p=fopen("D:\\TENLINES.TXT","r");
if(p==0)
{
printf("Error",);
}
fclose(p);
}
Run Code Online (Sandbox Code Playgroud)
这是给错误,我无法创建文件尝试重新安装编译器和使用不同的位置和名称的文件,但没有成功.我使用的是Windows 7,编译器是Dev C++版本5
我想知道这段代码有什么区别:
(Person)null
Run Code Online (Sandbox Code Playgroud)
而这段代码
default(Person)
Run Code Online (Sandbox Code Playgroud)
我认为它是一样的.它对我来说也是一样的.有什么细微差别?
有人可以帮助我理解以下逻辑如何解决获得a和 的产品b吗?
int getProd(int a, int b){
return (uintptr_t)&((char (*) [a])0x0)[b];
}
Run Code Online (Sandbox Code Playgroud) TiXmlElement *pElem;
std::string StatusResponse;
pElem = hResponse.FirstChild("StatusResponse").Element();
if (pElem)
StatusResponse = pElem->GetText();
Run Code Online (Sandbox Code Playgroud)
如果pElem有效但元素不包含文本,则pElem->GetText()返回NULL指针,从而导致异常.我该怎么处理?
谢谢.
我正在尝试用C++实现有向图.然而,我无法用我的RemoveEdge功能,之后我打电话的功能和它使用上的指针delete运算符,并设置指针nullptr,它不归零功能范围之外.
我不确定我是否已经清楚地说明了我的问题,但也许一些代码会有所帮助.
Graph.h
template<class TVertex, class TEdge, class TWeight>
class Graph
{
protected:
std::list<Vertex<TVertex, TEdge, TWeight>*>* _Vertices;
std::list<Edge<TVertex, TEdge, TWeight>*>* _Edges;
public:
Graph();
int TotalVertices();
int TotalEdges();
std::list<Vertex<TVertex, TEdge, TWeight>*>* Vertices();
std::list<Edge<TVertex, TEdge, TWeight>*>* Edges();
Vertex<TVertex, TEdge, TWeight>* FindVertex(const TVertex&);
Vertex<TVertex, TEdge, TWeight>* InsertVertex(const TVertex&);
void RemoveVertex(const TVertex&);
Edge<TVertex, TEdge, TWeight>* FindEdge(const TEdge&);
Edge<TVertex, TEdge, TWeight>* InsertEdge(const TVertex&, const TVertex&, const TEdge&, const TWeight&);
void RemoveEdge(const TEdge&);
};
Run Code Online (Sandbox Code Playgroud)
Graph.FindEdge()
template<class TVertex, class TEdge, class TWeight>
Edge<TVertex, TEdge, TWeight>* …Run Code Online (Sandbox Code Playgroud) 我正在使用自定义像素引擎制作一个RPG,当我尝试运行它时,我只得到一个NullPointerException并且我知道原因,但是当我尝试初始化该变量时,我在另一个位置得到另一个并且我修复它并且现在它根本不会运行,我仍然得到一个NullPointerException.这是一个出错的类,控制台告诉我错误在屏幕上显示了screen.render();
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import sprites.SpriteSheetLoader;
public class Game extends Canvas implements Runnable{
private static final long serialVersionUID = 1L;
public static final int HEIGHT = 120;
public static final int WIDTH = 120;
public static final int SCALE = 3;
public static final String NAME = "TypicalRPG";
public SpriteSheetLoader loader;
private BufferedImage img = new BufferedImage(WIDTH * SCALE, HEIGHT * SCALE, BufferedImage.TYPE_INT_RGB); …Run Code Online (Sandbox Code Playgroud) 我看到了以下代码:
char *str;
// Some code
if (! str || ! *str)
return str;
Run Code Online (Sandbox Code Playgroud)
为什么需要检查! *str?还if (! str)不够吗