BUG之路——14.11.11关于指针

内存编址+C语言指针+指针作为函数参数+指向一维数组的指针 C语言指针指针引例及其要点指针知识点拓充代码案例指针变量的算术运算指针变量作为函数的参数指针与一维数组使用不同方法输出数组元素1~100之间能被9或11整除的数指向一维数组的指针作为函数的参数实现数组升序排列 指针引例及其要点 先看这个引例: #include <stdio.h> int main() { int a=1024;//定义一个整型数据,并给它赋初值为1024 int *p=NULL;//定义一个指针变量,并给它赋初值0//NULL代表的数值是0 p=&a;//&amp 阅读详情
<pre name="code" class="cpp">//《C++教程》郑莉、李宁,人民邮电出版社,2010第一版
//第五章 抽象与分类

//简单的学生信息系统,有录入、查询、输出功能
//BUG:<span style="font-family: Arial, Helvetica, sans-serif;"> </span>

#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;

class Student{
private:
	string strName;//姓名
	unsigned long nIndex;//学号
	int nScore;//成绩
public:
	Student(string _name="somebody",unsigned long _index=2008010001,int _score=100):strName(_name),nIndex(_index),nScore(_score){}//构造函数初始化列表
	~Student(){}
	string getName();
	unsigned long getIndex();
	int getScore();
	void setName(string strNameNew);
	void setIndex(unsigned long nIndexNew);
	void setScore(int nScoreNew);

};

string Student::getName(){
	return strName;
}
unsigned long Student::getIndex(){
	return nIndex;
}
int Student::getScore(){
	return nScore;
}
void Student::setName(string strNameNew){
	strName = strNameNew;
}
void Student::setIndex(unsigned long nIndexNew){
	nIndex = nIndexNew;
}
void Student::setScore(int nScoreNew){
	nScore = nScoreNew;
}

//遍历查询函数
void Query(bool &flag,Student *sList,int size){
	unsigned long index;
	unsigned long num;
	char yOrN;
	bool isFound = false;
	cout<<"请输入要查询的学生学号:";
	cin>>index;
	for (int i = 0;i<size;i++)
	{
		num = sList[i].getIndex();
		if (num == index)
		{
			cout<<"姓名:"<<sList[i].getName()<<endl;
			cout<<"学号:"<<sList[i].getIndex()<<endl;
			cout<<"成绩:"<<sList[i].getScore()<<endl;
			isFound = true;
			break;
		}
	}
	if (!isFound)
	{
		cout<<"该学号信息不存在!"<<endl;
	}
	cout<<"是否继续查询?(y/n):";
	cin>>yOrN;
	if (yOrN == 'y'||yOrN == 'Y')
	{
		flag = true;
	}
	if (yOrN == 'n'||yOrN == 'N')
	{
		flag = false;
	}

}
//输出函数
void printAll(Student *sList,int size){
	for (int i=0;i<size;i++)
	{
		cout<<"姓名:"<<sList[i].getName();
		cout<<"\t学号:"<<sList[i].getIndex();
		cout<<"\t成绩:"<<sList[i].getScore()<<endl;
	}

}

int main(int argc, char* argv[])
{
	Student *sList;
	int size;//要录入信息的学生个数
	string _name;
	unsigned long _index;
	int _score;
	cout<<"请输入学生总数:";
	cin>>size;
	<span style="color:#ff0000;">sList = new Student[size];//BUG:一开始没有这句,所以运行起来后提示的错误信息是"The variable 'sList' is being used without being initialized"</span>
	for (int i=0;i<size;i++)
	{
		cout<<"学生姓名:";
		cin>>_name;
		cout<<"学生学号:";
		cin>>_index;
		cout<<"学生分数:"; 
		cin>>_score;
		sList[i] = Student(_name,_index,_score);
	}
	bool flag = false;
	char YorN;
	cout<<"是否进行查询?(y/n):";
	cin>>YorN;
	if (YorN == 'y'||YorN == 'Y')
	{
		flag = true;
	}
	while (flag)
	{
		Query(flag,sList,size);
	}
	cout<<"------------------------"<<endl;//当查询结束,自动打印出所有学生信息
	cout<<"所有学生数据"<<endl;
	printAll(sList,size);
	return 0;
}

唉,指针不初始化就不能用,犯了多少次还是会出这种弱智错误,我真是个傻X……╭(╯^╰)╮。谨记于此,以备后忘。


        
揭秘大厂智能生产调度AI系统架构:架构师拆解中台化设计3大优势 智能生产调度AI系统是基于AI算法(如遗传算法、强化学习、深度学习),结合生产数据(如订单、设备、库存、人员),自动生成最优生产计划与调度方案的系统。最大化设备利用率(减少停机时间);最小化生产周期(快速交付订单);优化库存水平(降低积压与短缺);提升准时交货率(满足客户需求)。维度传统调度系统智能调度AI系统决策逻辑规则引擎+人工经验AI算法(预测+优化)数据处理手工汇总+静态数据实时数据整合+动态更新适应能力固定场景(如单一产品、单一工厂) 阅读详情

相关推荐

MeshLab新手必看:5分钟搞定泊松表面重建(附完整点云处理流程)

本文详细介绍了如何使用MeshLab进行泊松表面重建,从点云数据导入、预处理到核心参数设置,再到后处理与模型优化,提供了完整的3D重建流程指南。特别适合计算机视觉和3D重建领域的新手快速掌握泊松重建技术,提升工作效率。

kafka6courier的博客 230

深入理解C语言指针——挑战C指针笔试题 (和bug郭一起学C系列)

⏰ 写在前面 大家对于指针恐怕都不陌生! 没学过C语言那也一定听过指针吧,指针是C最强的优势,学不明白也就成了劣势!大家不必害怕,指针并没有那么恐怖,掌握了指针,让你的C语言更上一层楼! bug郭和你一起将指针进阶学习一遍,一起加油! 目录点击跳转:alarm_clock: 写在前面 ......

bug郭的博客 2403

手把手教你用TLP350驱动IGBT:光耦隔离驱动电路完整设计教程

本文详细介绍了如何使用TLP350光耦隔离驱动电路设计IGBT驱动方案。从TLP350芯片特性分析到驱动电路架构设计,包括信号调理、自举电源和栅极控制网络,再到PCB布局优化和保护电路设计,提供了完整的实战指南。通过实测波形分析和故障排查,帮助工程师快速掌握IGBT驱动电路的设计要点和进阶技巧。

weixin_30566063的博客 822

【C++11】智能指针的使用

C++11智能指针的使用,带你领略智能指针浩瀚的世界

有梦想的电信狗 1281

为什么Nano Banana在图像一致性上碾压GPT和豆包?深度解析其技术原理与使用技巧

本文深度解析了Nano Banana在图像一致性上超越GPT和豆包等工具的技术原理。它通过基于参考图的强条件生成、精准的区域感知与掩码控制等核心技术,实现了“外科手术式”的精准图像编辑。文章还分享了包括提示词工程、参数调整在内的实用技巧,并探讨了通过API Key将其能力集成到自动化工作流中的潜力。

omega的博客 354

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

m0_68167062的博客 2260

c++11/14 新标准概述和例子

c++11/14 新标准概述和例子 1.1 概述 相对于c++98/99 版本,c11/14增加了许多新特性,其目标主要有两个 1.更适合系统编程和构建程序库 2. 更加容易学习 下面来介绍一些主要改变 1.2左值与右值 1.2.1定义 c++11/14标准描述了左值和右值的定义,但是比较难以理解: 以赋值符号 = 为界,= 左边的就是左值,= 右边就是右值。 下面简略说一下摘要: 1.所有表达式...

taoist_ma 1917

Python爬虫实战:5分钟搞定大众点评评论数据抓取(附完整代码)

本文详细介绍了使用Python爬虫高效获取大众点评评论数据的5个关键技巧,包括环境配置、智能页面解析、反反爬策略、数据存储与容错设计以及性能优化。通过实战案例和完整代码,帮助开发者快速掌握文本挖掘技术,适用于市场分析和商业决策。

weixin_30660027的博客 290

[C++] 智能指针 进阶

[C++] 智能指针 进阶 在很久之前我们探讨了智能指针的浅显认识,接下来会更加深入,从源码角度认识智能指针,从而了解智能指针的设计原理,并应用到以后的工作项目中。本文将会按照C++智能指针的发展历史,回顾智能指针的各个版本的设计。后半部分将会模拟实现最常考的shared_ptr的功能。

石墨博客 1250

论文必备 - YOLOv12热力图可视化,支持指定模型,指定显示层,设置置信度,以及10种可视化实现方式

本文带来的是YOLOv12热力图可视化功能,支持,以及。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。

Limiiiing的博客 1705

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南

OpenClaw已经开源3个月有余,作为深耕AI Agent领域的博主,我亲身探索了各种基于OpenClaw的赚钱方法,也踩过坑、付出了时间与精力。现在,我将这些真金白银砸出来的实战经验,毫无保留地总结成这个专栏,分享给不想从零开始摸索的你。博主在优快云已有7万+粉丝和1100万+阅读量,但这却是我的第一个付费专栏。正因如此,我比任何人都更珍惜这个“第一次”。我会像一个手艺人打磨作品一样,死磕每一篇文章的质量,并持续根据订阅者的反馈优化内容。也许你的疑问就是当篇文章的优化点。

冯·诺依曼 2437

C++11智能指针xxx_ptr

C++11智能指针

默示MoS的博客 1067

Linux 4.19、Linux 5.10、Linux 6.1 三个版本详细分析

Linux 4.19发布日期:2018年10月22日LTS 状态:是长期支持版本,官方支持到2024年12月。Linux 5.10发布日期:2020年12月13日LTS 状态:LTS 版本,官方支持到2026年12月。Linux 6.1发布日期:2022年12月11日LTS 状态:不是官方的LTS版本,但通常社区会为新的版本提供一定时间的支持。定位:稳定性和长期支持,广泛应用于多种平台,尤其是嵌入式系统和服务器。主要优势:稳定性高,广泛的硬件支持,核心功能可靠。

小灰灰的博客 5949

程序员经典小 Bug

虽然这些 bugs 看起来很小,但它们可以导致开发过程中不必要的调试和错误处理。在编写代码时,程序员不仅要关注功能的实现,更要注重细节和测试。通过养成良好的编码习惯,仔细检查每一行代码,您可以有效避免这些常见的“小 bug”。

2503_90110993的博客 1018

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

what to benefit from the C++14 Standard

转载:http://weibo.com/ttarticle/p/show?id=2309404029139492430854 我同时也是哥伦比亚的客座教授,尽管我辞掉了Texas A&M的教职,但在校方坚持下,我现在还算是一名教授。 好的,接下来我会简单介绍: 我们希望从编程语言中获得什么,编程语言在开发环境中扮演者什么角色 一个使用C+

why is this 521

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

oracle用jdbc时报空指针NullPointerException错误

如果你用的是oracle的数据库,使用jdbc时遇到下面的错误: java.lang.NullPointerException at java.lang.String.(Unknown Source) at oracle.sql.CharacterSet.AL32UTF8ToString(CharacterSet.java:1517) at oracle.jdbc.driver.DBCon

lupangdelu的专栏 6435

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

视频教程-《C经典面试》编译链接、指针、内存bug、函数、其它-C/C++

《C经典面试》编译链接、指针、内存bug、函数、其它 2008年毕业于沈阳航...

weixin_31863995的博客 175

C++11 智能指针详解:告别内存泄漏,轻松管理动态内存

C++11智能指针通过RAII机制自动管理动态内存,解决了传统指针手动管理的痛点。主要包含三种类型:unique_ptr(独占所有权,不可复制但可转移)、shared_ptr(共享所有权,引用计数)和weak_ptr(解决shared_ptr循环引用问题)。最佳实践包括优先使用unique_ptr、共享时用shared_ptr、使用make_unique/make_shared创建、警惕循环引用等。智能指针显著提高了内存安全性,减少泄漏和重复释放风险。

2301_78884150的博客 930

面试:C++ 11 智能指针

std::weak_ptr 用来表达临时所有权的概念:当某个对象只有存在时才需要被访问,而且随时可能被他人删除时,可以使用 std::weak_ptr 来跟踪该对象。需要获得临时所有权时,则将其转换为 std::shared_ptr,此时如果原来的 std::shared_ptr 被销毁,则该对象的生命期将被延长至这个临时的 std::shared_ptr 同样被销毁为止。所以,当shared_ptr离开作用域时,其内的资源释放了,这时候指向该shared_ptr的weak_ptr发生了什么?

qq18218628646的博客 456

debug bug experience1

2016.06.02 写了个测试程序,其中引用了cuda的thrust库,且用nvcc编译 但是由于文件名为main.cpp(坑爹)而不是main.cu(正解),出现了很凌乱的thrust报的bug,随便看看,感受一下吧: 2016.5.28 对于CUDA,出现并发的数据访问时,该数据会被置为0;对于global,shared都是这样2016.5.25 使用&、|之类的为操作,要注意他的优

thefighteran的专栏 1338

程序员排查BUG指南

程序员排查BUG(错误)是软件开发过程中的重要一环, 以下是一份程序员排查BUG的指南,帮助你更有效地识别、定位和修复问题

weixin_41479603的博客 1713

QT:遇到的报错、bug及解决方法

遇到的bug及解决方法

Yanjun2i的博客 6168

使用 C++11 智能指针时要避开的 10 大错误

http://blog.jobbole.com/104666/ 我很喜欢新的C++11的智能指针。在很多时候,对很多讨厌自己管理内存的人来说是天赐的礼物。在我看来,C++11的智能指针能使得C++新手教学更简单。 其实,我已经使用C++11两年多了,我无意中发现多种错误使用C++11智能指针的案例,这些错误会使程序效率很低或者直接崩溃。为了方便查找,我把它们按照下文进行了归类。 在开始之

liufengl138的专栏 1928

C++ Bug汇总

动态分配的内存没有被正确释放。长时间运行的程序可能会耗尽所有可用内存。

qq_43767164的博客 936

C++11/14/17中this捕获的生命周期难题(深度剖析与最佳实践)

深入解析lambda捕获this的生命周期难题,揭示C++11/14/17中常见内存错误根源。涵盖成员函数内捕获场景、引用与值捕获差异及安全实践方案,避免悬空指针。掌握正确用法,提升代码健壮性,值得收藏。

VarChat的博客 377

编程学习Bug记录

编译器报错error C2027: 使用了未定义类型“UArrowComponent”Debug后未包含组件头文件。

m0_53360850的博客 1345
上一篇: C++动态分配数组
下一篇: C++构造函数详解及显式调用构造函数
code_xbug
博客等级 码龄13年 26粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值