课程42-63 数组与指针

一维数组:

查询指向数组的指针长度是4位,而单纯的数组则是返回被分配连续空间的总长度

数组没有分配数值的部分由系统分配初始值

冒泡排序

二维数组:

使用for为指针创建二维数组时,其存入地址并不是连续的(比如行)。

不使用指针时,是连续的。

函数:

值传递与对象传递

函数可以声明多次,定义只能有一次

因为编译器在编译过程中依次生成对应源文件的可重定位目标文件(.o),每个源文件中调用的函数在链接前都是以符号的形式体现在.o文件中。在编译过程中不会去检查某个函数的形式,因为函数参数是通过寄存器和压栈来处理的,直接把函数翻译成符号,编译器是不知道关于函数参数的信息的,最后交给连接器把符号翻译成地址。所以链接的时候只要能找到对应得符号就不会报错。

原文链接:https://blog.csdn.net/qq_28648279/article/details/78463345

指针:

1.引用类似于变量的别名,不用检查其是否为空

2.32位操作系统指针占4字节,64位操作系统指针占8字节

3.0-255的内存编号是系统用的,指针可以指向但不可访问,报错权限不足(野指针同理无权访问)

4.“(数据类型*)+地址参数”(可以是地址的数字,也可以是某一对象的地址),是指针的定义方式

如:(int*)&b、(int*)123456

5.不可通过常量指针修改指向地址的数据(但可以指向非常量,只是不能通过该指针修改指向地址的数据),指针常量代表指针的地址值不可改变(不能指向别处),且两种指针仅仅是常量部分不可修改。

声明方式: const int* p及 int* const p,从声明可以看出侧重点的不一样,另外 const int* const p也可以通过编译,将地址值和指向地址的数据都固定死了(照样可以指向非常量,只是不能通过该指针修改,要理解常量所限定的范围仅局限于该指针的操作)

6.指针的位置偏移应用了运算符重载,根据指针的类型决定偏移的字节数

指针可以指向不同类型数据的地址,其本身的意义只有地址值,所以只需要通过类型强转即可指向。指针的类型只会影响针对该指针的操作,如偏移。(希望我理解的是对的)

例:

int main() {
	int a[] = {100, 200};
	char* b = (char *)a;
	cout << *(int*)(b + 4) << endl;
	cout << *(int*)(((char*)a) + 4) << endl;//意义相同
	system("pause");
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值