补发8.24

笔记:

1.指针与const

const在*左边不是表示数值不能改变,而是表示不能通过指针改变数值,直接赋值是可以改变的。
常量指针:常量不可以变,指针指向可以变(如不能通过指针p去修改变量i )
指针只有2个能力,一是指向,一是通过指针去修改值,2个const一个把指向锁了,一个把修改能力锁了
判断哪个被const了的标志是const在**前面还是后面(在前面:它所指的东西不能被修改;在后面:指针不能被修改)

转换
把一个非const的转换成const的

void f(const int* x);
int a = 15;
f(&a);      //OK
const int b = a;
f(&b);      //OK
b = a + 1;

当要传递的参数类型比地址大时,以上手段既能用较少字节数传递值给参数,又能避免函数对外面的变凉的修改

const数组

  • const int a[] = {1,2,3,4,5,6,};
  • 数组变量已经是const的指针了,这里的const表明数组的每个单元都是const int
  • 必须通过初始化赋值

保护数组织
把数组传到函数里,又不希望函数修改数组,就可要求函数把函数原型写成: int sum(const int a[],int length);
这样在sum函数里就不会对数组有任何修改
把数组传入函数传入的是地址,则函数内部可修改数组的值
为保护数组不被函数破坏,可设置参数const

3.指针运算

在这里插入图片描述
验证:

#include <stdio.h>

int main(void)
{
	char ac[] = { 0,1,2,3,4,5,6,7,8,9, };
	char* p = ac;
	printf("p=%p\n", p);
	printf("p+1=%p\n", p + 1);

	int ai[] = { 0,1,2,3,4,5,6,7,8,9, };
	int* q = ai;
	printf("q=%p\n", q);
	printf("q+1=%p\n", q + 1);

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值