c语言const修饰变量和指针,指针和数组区别笔记

const修饰变量:

        const int a=20;

int *p=&a;

*p=650;

printf("%d\n",a);

const修饰指针:

const int *p;

        可以修改p,不可以修改*p

int const *p;

        可以修改p,不可以修改*p

int *const p;

        可以修改*p,不可以修改p

const int *const p;

        不可以修改p,也不可以修改*p

总结:const向右修饰,被修饰的部分即为只读(不能修改)。

常用: 在函数的形参内,用来限制指针所对应的内存空间为只读。

指针和数组:

        数组名:数组名是地址常量,不可以被修改

        

 指针是变量,可以用数组名给指针赋值

 

 取数组元素:

	int a[] = { 1,2,3,5,4,6,8,7 };
	int n = sizeof(a) / sizeof(a[0]);
	for (size_t i = 0; i < n; i++)
	{
		printf("%d",a[i]);
	}

int arr[ ]={1,2,3,5,4,6};

int *p=arr;

arr[0]   ==   *(arr+0)   ==   p[0]  ==   *(p+0)

指针和数组的区别:

1.指针是变量,数组名为常量。

 2.sizeof(指针)    =====》4/8字节

     sizeof(数组)====》 数组的实际字节数

	int a[] = {1,2,3,4,5,6,7,8,9};

	int n = sizeof(a) / sizeof(a[0]);

	int* p = a;

	printf("sizeof(a)=%u\n",sizeof(a));
	printf("sizeof(p)=%u\n", sizeof(p));

输出 :

sizeof(a)=36
sizeof(p)=8

指针++操作数组:

	int a[] = {1,2,3,4,5,6,7,8,9};

	int	*p = a;
	int n = sizeof(a) / sizeof(a[0]);

	printf("first p=%p\n",p);

	for (size_t i = 0; i < n; i++)
	{
		printf("%d",*p);
		p++;
	}
	putchar("\n");
	printf("p=%p\n",p);

指针两种方式访问数组:

	int a[10] = {1,2,3,4,5,6,7,8,9};
	int n = sizeof(a) / sizeof(a[0]);
	int* p = a;

	printf("first p=%p\n",p);

	for (size_t i = 0; i < n; i++)
	{
		*(p + i) = 10 + i;
	}
	for (size_t i = 0; i < n; i++)
	{
		printf("%d ",*p);
		p++;
	}
	printf("\n");

 输出:

first p=0095FAD8
10 11 12 13 14 15 16 17 18 19

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值