第一篇:程序设计基础和数据结构

二维数组有两种存储方式

1,行优先存储   在连续的内存上,一行一行的安在上面

2,列优先存储   在连续的内存上,一列一列的安在上面

c/c++数组都是采用的行优先存储

例题: 在c语言中有一个矩阵大小16K*16K,若对两个这样的矩阵进行运算,行优先读取与列优先读取的区别?

A   一样快       B,行优先快     C   列优先快      D  无法确定

答案:B

解析:因为c/c++是行优先存储,那么我们采用行优先读取的话,从内存中取数据就可以按顺序遍历取出来,但是列优先存储还有四处移动指针找内存位置

二维数组的存储方式其实是和一维数组是一样的

但是如果使用的是双重只能指向的二维数组就不能用一维读取方式,因为访问的会是地址

指针+/-操作移动数不直接是字节数,而是 当时类型的字节数*移动数 个字节,因为这样比较人性化

指针和指针的操作只限于指向同一个数组,那求得就是两个之间的距离

const修饰指针

1,const int *p

代表 *p不可以变,即p指向的那个变量的内容不可以变

2,int *  const p

代表  p不可以变,那么说明p的指向不能变

3,const int * const p  

代表p的指向不可以变,p指向的变量的内存也不能变,相当于想通过p指针来操作那个变量的话,只能访问值,变成了常量

猜你喜欢

转载自www.cnblogs.com/Lis-/p/12189009.html