new和delete 备忘

new操作符

通过new来动态分配存储空间
语法格式:

指针变量 = new 类型

"类型"是任意类型,但不允许是函数类型,可以是:基本数据类型、数组类型、类类型、函数指针类型等;
例如:

int *p1=new int(0);//动态分配一个整数单元,并设置初始值
cout<<*p<<endl;
char *p2=new char;//动态分配一个字符型单元

申请动态数组

int *p3=new int[3];//动态分配长度为3的整型数组

由new分配的堆空间与普通变量不同,它没有名字,只能通过指针对堆空间进行间址方式访问

delete 操作符

动态释放已分配的空间
语法格式:

delete 指针变量

例如:

delete p1;//释放p1所指的存储空间
delete  p2;//释放p2所指的存储空间

释放new关键字创建的数组

delete []p3;

delete释放了指针变量所指的空间,但是并没有删除指针变量本身的存储单元和清除指针变量原来的值p1、p2、p4这些指针变量的地址值虽然还存在,但已经没有意义
在delete操作之后,对指针变量赋为NULL,清楚其无意义的地址值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Android Studio环境下录的简单实现方法: 1. 首先,在布局文件中添加ScrollView、EditText、TextView和ImageButton控件,分别用于显示录内容、输入录内容、显示查询结果和添加录。 2. 在Java代码中,创建一个SQLiteOpenHelper类,用于创建和升级数据库。在该类中,创建一个名为“memorandum”的表,包含id、content和time三个字段,分别用于存储录的编号、内容和时间。 3. 创建一个Memorandum类,用于封装录的内容和时间。 4. 创建一个MemorandumDao类,用于对录进行增删改查操作。在该类中,定义insert()、deleteAll()、queryById()和queryAll()四个方法,分别用于添加录、删除所有录、根据id查询录和查询所有录。 5. 在MainActivity中,创建一个MemorandumDao对象,并在ImageButton的点击事件中调用insert()方法添加录,在TextView的点击事件中调用queryById()方法查询录,在ImageButton的长按事件中调用deleteAll()方法删除所有录。 ```java // SQLiteOpenHelper类 public class MemorandumOpenHelper extends SQLiteOpenHelper { private static final String DB_NAME = "memorandum.db"; private static final int DB_VERSION = 1; private static final String CREATE_TABLE = "create table memorandum (id integer primary key autoincrement, content text, time text)"; public MemorandumOpenHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("drop table if exists memorandum"); onCreate(db); } } // Memorandum类 public class Memorandum { private int id; private String content; private String time; public Memorandum(int id, String content, String time) { this.id = id; this.content = content; this.time = time; } public int getId() { return id; } public String getContent() { return content; } public String getTime() { return time; } } // MemorandumDao类 public class MemorandumDao { private SQLiteDatabase db; public MemorandumDao(Context context) { MemorandumOpenHelper helper = new MemorandumOpenHelper(context); db = helper.getWritableDatabase(); } public void insert(String content, String time) { ContentValues values = new ContentValues(); values.put("content", content); values.put("time", time); db.insert("memorandum", null, values); } public void deleteAll() { db.delete("memorandum", null, null); } public Memorandum queryById(int id) { Cursor cursor = db.query("memorandum", null, "id=?", new String[]{String.valueOf(id)}, null, null, null); if (cursor.moveToFirst()) { String content = cursor.getString(cursor.getColumnIndex("content")); String time = cursor.getString(cursor.getColumnIndex("time")); return new Memorandum(id, content, time); } return null; } public List<Memorandum> queryAll() { List<Memorandum> list = new ArrayList<>(); Cursor cursor = db.query("memorandum", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String content = cursor.getString(cursor.getColumnIndex("content")); String time = cursor.getString(cursor.getColumnIndex("time")); list.add(new Memorandum(id, content, time)); } return list; } } // MainActivity类 public class MainActivity extends AppCompatActivity { private EditText etContent; private TextView tvResult; private ImageButton ibAdd; private MemorandumDao dao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etContent = findViewById(R.id.et_content); tvResult = findViewById(R.id.tv_result); ibAdd = findViewById(R.id.ib_add); dao = new MemorandumDao(this); ibAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String content = etContent.getText().toString(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = sdf.format(new Date()); dao.insert(content, time); etContent.setText(""); } }); tvResult.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Memorandum memorandum = dao.queryById(1); if (memorandum != null) { tvResult.setText(memorandum.getContent() + "\n" + memorandum.getTime()); } } }); ibAdd.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { dao.deleteAll(); tvResult.setText(""); return true; } }); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值