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

目录

一维数组

字符数组

1、用字符初始化

 2、用字符串初始化

3、字符串交给char*指针

二维数组


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

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

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

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

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

一维数组

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

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

字符数组

1、用字符初始化

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

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

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

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

 2、用字符串初始化

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

 

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

3、字符串交给char*指针

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

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

 &p中,一级指针p的地址中可能会有\0的ASCLL码值0,为随机值,和+1跳过的随机值无关。还要考虑大小端存储的问题。较复杂,知道是随机值即可。

二维数组

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

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值