2021-11-23 数组名

int arr[20];arr是首地址名,相当于指针,这时不能再加&取地址符,不然就成了首地址的地址了。

正确表达:

int main() {
    int arr[20] = {0};
    int* p = arr;
    printf("%d ", *p);
}

注意,当printf时应选择用*p而不是p,这是因为*是解引用操作符,*p指向的对象是arr,数组的首地址,而p指向的是一个随机值,因为我们并没有给它赋值过(并且不能直接给p赋值)。可以通过改变*p来改变数组的首地址值。

int main() {
    int arr[20] = {0};
    int* p = arr;
    *p = 20;
    printf("%d ", *p);
}

此外,strlen的while不能写成*p++,不然会往‘\0'后多移一位,因为这么写在*p等于0的时候,确实是不会进入到{}内部,但是*p在用完之后已经++了,所以正确的不能这么些,应该把++移到{}里来判断。 

正确的如下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值