初入江湖的蠢蛋--那些年(虽然也没几年)我写过的蠢代码

没有目录(蠢蛋不配有目录)

♈1.定义变量时,由于其定义顺序决定了构造顺序,所以初始化时要根据其定义顺序进行

♉2.对于书写格式,一般都是要按照调用的函数方法,不同的定义可能会导致无法调用方法

♊3.使用指针要记得对其进行初始化,实际上这还不是关键。

使用类指针时,他要指的一定是对象,否则他就是一个空对象。

♋4.遗漏大括号问题.  这里会报错为未找到匹配命令,且会指出错误所在整体区域

第一个构造函数这里少了个大括号,导致后面所有函数失效

♌5.检查空间的活没有特殊要求,要放到函数开头  //这中间要涉及到很多因素,有可能函数结束后会改变很多条件,甚至会有些值是随机值,导致出现栈错误。

♍6.对于不能调用问题  大部分都是以一个非对象来调用方法(核心思想:实际的对象才有调用方法的权利

很明显这里的arr只是个指针,即使在当前类中把Hashnode声明为友元依旧不能调用。

♎7.针对自定义的类,c++11会产生默认的无参构造函数,如果自己定义了带参的构造函数,此时若要无参实例对象,则会报错,因为此时不会自动生成默认的构造函数。

♏8.可爱的const

const在最前面那他修饰的是整体的结果 在中间那他指的是中间过程

这里的对于a的const限定的是指针所指的内容不可修改,但是指针可以改变指向也就是a ++是可以的

对于b的const则是限定的指针指向不可修改,指向的内容可以改变,这里的举例是(*b)++

♐9.常量指针(const的位置)

因为所谓的arr实际上是一个常量指针,arr只代表arr[0]不能++操作。

int const *p 和 int *const p 是两种不同的指针类型,分别表示指向常量的指针和指针常量。

int const *p:这表示 p 是一个指向 int 类型常量的指针。也就是说,p 所指向的值是常量,不能通过 p 来修改它所指向的值。但是,指针 p 本身是可以修改的,可以让它指向其他 int 类型常量。

cppCopy Code
intvalue = 5;
intconst*p = &value;

// 错误示例:无法通过 p 修改所指向的值*p = 10// 编译错误// 正确示例:可以改变指针 p 的指向intanotherValue = 15;
p = &anotherValue;

int *const p:这表示 p 是一个指针常量,指针 p 的值不能改变,即不能让它指向其他内存地址。但是,通过指针 p 可以修改它所指向的值。

cppCopy Code
intvalue = 5;
int*constp = &value;

// 正确示例:可以通过 p 修改所指向的值*p = 10;

// 错误示例:无法改变指针 p 的指向intanotherValue = 15;
p = &anotherValue; 
// 编译错误

总结:

  • int const *p:指向常量的指针,所指向的值是常量,指针本身可以更改指向。
  • int *const p:指针常量,指针本身的值是常量,不能更改指向,但可以通过指针修改所指向的值。

 

const int *p、int const *p 和int * const p 都是指针相关的声明,它们涉及到 const 修饰符在不同位置的使用。

1)const int *p:这个声明表示 p 是一个指向常量整数的指针。也就是说,p 所指向的整数是不可修改的,但指针 p 自身是可变的,可以指向其他地方。通过 p 可以读取所指向的整数的值,但不能通过 p 修改这个整数的值。

2int const *p:这个声明和 const int *p 是等效的,表示 p 是一个指向常量整数的指针。无论 const 位于 int 前面还是后面,它都修饰了整数本身,使其成为常量。因此,对于指针 p,同样可以读取所指向的整数的值,但不能通过 p 修改这个整数的值。

3int * const p:这个声明表示 p 是一个指向整数的常量指针。也就是说,p 的指向不可变,它将一直指向初始化时所指向的整数变量,不能再指向其他地方。但是,通过 p 可以修改所指向的整数的值。也就是说,可以通过 p 进行赋值操作来改变所指向整数的值,但不能改变指针 p 自身的指向。

综上所述,const int *p 和 int const *p 都表示指向常量整数的指针,而 int * const p 表示指向整数的常量指针。注意,这些声明中的 const 关键字的位置不同会产生不同的含义。


实际上我在知乎上看到了一个老哥的记忆方法,在这里分享一下,关于顶端const和底端const,不用搞得那么学术,管他什么顶端底端的呢,只要记住一点就好,那就是const优先和它的左侧进行合体,const int * p 没有左侧,那他就修饰它的右边,也就是int;int const * p ,这个时候const修饰的也是int 和上面那个一样。 int * const p ,ok 这里修饰的是* 。

(我个人的观点:学c++没必要把它当一门学术去学,它本身就是一个语言,整天专家那一套有用?不如让他中国化,想一下老外学编程那不就=

整形  啊= 10;

整形 波 =20;

整形 次= 啊+ 波;

以这个观点再开看看咱这些所谓的专业术语,有用?[其实也有用,如果要了解行业前沿,去跟老外交流汉化变编程还真行不通]  )

以上观点仅适合菜鸟。

♑10._findnext 报错

 

更改为32位即可处理 但这并不是好办法

真正的改进是:

 long hFile; 改成: intptr_t hFile; 

因为_findnext()返回类型为intptr_t而非long型,从“intptr_t”转换到“long”丢失了数据。

64位机器下也可以该位long long


别问为什么到摩羯座就没了(因为我是摩羯座)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值