指针和数组笔试好题分享1

目录

一维数组

字符数组

1、用字符初始化

 2、用字符串初始化

3、字符串交给char*指针

二维数组


&arr 取出的是整个arr地址的数组,结果显示的是首元素地址,但+1跳过整个数组.

sizeof()内部单独放arr,或者计算后等效为arr,结果是整个数组大小。但+0不是。

取出的地址可以自行放入一个相应的指针变量中,用这个指针变量进行+ -操作。

sizeof根据类型确定大小,在编译期间完成。不参与实际运算,不会改变原来变量的大小。(一个表达式既有值属性,也有类型属性)  sizeof返回值会size_t类型。

指针和数组笔试好题分享1_第1张图片

 运行时     CPU会进行表达式的计算,但是由于计算宽度问题,又会涉及整形提升和算术转换。

一维数组

指针和数组笔试好题分享1_第2张图片

 注意:sizeof(*&a),*和&抵消,a单独在内部。

&a的类型是数组指针,+1跳过整个数组。

字符数组

1、用字符初始化

指针和数组笔试好题分享1_第3张图片

     //把6个字符放入arr中,不加\0,arr[]根据初始化内容确定大小,大小为6。

指针和数组笔试好题分享1_第4张图片

 下面是strlen库函数,需要的是一个地址,然后计数到\0结束,使用库函数时可能会产生错误。

但是sizeof是一个操作符,运算符,一定能根据类型确定出结果,不会产生错误。

strlen用char*指针接收,传参类型不同时,C语言自动转换,只有警告,不会报错。

指针和数组笔试好题分享1_第5张图片

 2、用字符串初始化

因为用字符串初始化,自动带一个\0,为arr[7]

指针和数组笔试好题分享1_第6张图片

 指针和数组笔试好题分享1_第7张图片

 \0之前都可以统计准确,之后的为随机值。

3、字符串交给char*指针

指针和数组笔试好题分享1_第8张图片

指针和数组笔试好题分享1_第9张图片

取一个元素的地址给相应类型的指针,指针+1跳过相应的一个元素。

取一个一级指针的地址给二级指针,二级指针+1,跳过对应一级指针的一个元素。 

指针和数组笔试好题分享1_第10张图片

指针和数组笔试好题分享1_第11张图片 &p中,一级指针p的地址中可能会有\0的ASCLL码值0,为随机值,和+1跳过的随机值无关。还要考虑大小端存储的问题。较复杂,知道是随机值即可。

二维数组

arr[0]表示第一行整体,即可看作第一行的数组名,代表的也是首元素arr[0][0]的地址

指针和数组笔试好题分享1_第12张图片

 指针和数组笔试好题分享1_第13张图片

你可能感兴趣的:(C进阶,数据结构,算法)