C++中的细节知识(零碎整理)

打印二维数组

        矩阵打印:

	for (int i = 0; i < 2; i++)
	{
		for (int j=0; j < 3; j++)
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}

外循环打印列,内循环打印行。

二维数组地址问题:

        (int)arr[] ;十进制的地址显示,第一行(int)arr[0][0],二者一样,因为二维数组的首元素为一个一维数组名,一维数组名本身就是一个地址,不用加&。每行相差一行的内存(字节数*列数);访问单个元素的地址,需要使用&取到具体地址

函数的分文件书写

        “”表示自己写的头文件

指针函数数组的应用:

       指针

1.x32位操作系统指针占用4个字节x64位下占8个字节(不管什么数据类型):因为存地址
2.左上角debug调速器x84采用的是32位的
3.空指针:指针变量指向内存中编号为0的空间,初始中使用,一开始你不知道指向哪(空指针的指向的内存,没有权利访问,0-255,0和255为系统占用)写入访问权限冲突
(汇编的知识中,因为里面存在很多中断例程,一旦里面的内容被改变,中断例程可能无法运行,严重的会直接导致系统崩溃。)
4.野指针:指向非法内存空间 (int *)转变指针 ,尽量避免使用,就是你把数字或者字符直接赋予给指针。因为这个数字或者字符你没申请空间,int a=10;这是合法的申请了内存所以可以
但是 *p= (int *)0x11110;不合法。不可以,会报错。
5.const 修饰指针(常量指针:类似数据类型)const int * p=&a 指针的指向可以修改,但是指针指向的值不可以修改,(理解:表面上你修改了指针的值,其实你修改的是他的地址,指向的地址不同,
对应的值也可能不同ps 除非两个变量都是10,一样大。所以修改的实际语法从此处而来: *p=20;不可以*p是所指向变量的值,不可修改。p=&b;(正确,修改的p指向的地址
对应了b的值)但是修改 a或者b还是可以滴,指向的变量自己改变了,但是地址没变,在int 开辟的空间0-255中可以随意修改。

const在指针中的用法与注意点:

1.const 固定常量(指针常量) int * const p =&a; const p 规定常量p, *()为指针,指针指向的值可以改,但是指针指向不可以改,const后面跟的事变量===表示一个常量
*p=20;正确::::常量指针不改量,指针常理不改针 (const 后面 * 固定了指针)(const 后面 p(变量)固定的常量),固定了谁谁可以变。否则不可以。
2.const 修饰常量 const int * const * p (都被固定嘞)就都不能改了 const 翻译为常量
看const位置和*的位置 判断   const int * p (常量 int 指针 p);int * const p :( int 指针 常量 p)
3.数组中数组名就是数组的首地址

函数数组与指针的应用

1. int *p =&a; p++;(让p的地址先后偏移4个字节ps32位)
2.当数组名作为参数传入到函数里面时,此时通过sizeof(数组名)查看到的事指针的长度,而不是数组中元素的个数,即函数无法算处数组的长度,传入后里面的内部操作就和
数组操作一样了 arm[i]****都是可以的

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值