【指针1】

内存和地址

1.计算机中内存单元的编号地址指针
2.在计算机中为了方便管理内存,内存被划分为以字节为单位的内存空间,相当于一个内存单元为一个字节。
3.为了方便找到这个内存单元,每个内存单元都有一个编号。
4.变量创建的本质:在内存上开辟空间

#include<stdio.h>
int main(){
int i=4//要向内存申请4个字节的空间,来存放数据4
int * p=&i;//P叫指针变量,存放指针的变量
*p=0;//*是解引用操作符/间接访问操作符
//*p就是通过P中存放的地址,找到地址指向的空间,*p就是a;
return 0}

*说明P是指针变量;
P的类型是int *;
P指向的对象是int 类型的;

指针类型变量的意义

1.指针类型是有意义的;
2.指针类型决定了指针在解引用操作时的权限,也就是一次解引用访问几个字节;e.g.char类型指针访问1个字节,int类型指针解引用访问四个字节;

coust修饰指针

#include<stdio.h>
int main(){

const int n=100;
//n=20//err因为coust修饰变量,使得这个变量值不能被修改
int * p=&n;
*p=20;
printf("%d\n",n);
return 0;
}

coust修饰指针
1.coust 放在的左边。
限制的是指针指向的内容,意思是不能通过指针来修改指向的内容,但指针变量本身可以修改;
2.coust 放在
的右边。
限制的是指针变量本身,意思是不能修改指针变量的指向,但是可以修改指针指向的内容;

#include<stdio.h>
int main(){
int m=100,n=10;
coust int * p=&n;//或者coust 在int后边,强调在*左边即可
*p=0;//报错,不可以改变p指向的值
p=&m;//但可以改变p变量本身的值
printf("%d\n",n);
return 0;
}

#include<stdio.h>
int main(){
int m=100,n=10;
 int * coust p=&n;
p=&m;//报错,不可以改变p变量本身的值
*p=0;//但可以改变p指向的值
printf("%d\n",n);
return 0;
}

指针运算

指针±整数的俩种算法

#include<stdio.h>
int main(){
int  arr[]={1,2,3,4,5,6,7,8,9,10};
int *p=&arr[0];
int i=0;
int sz=sizeof(arr)/sizeof(arr[0]);
for(i=0;i<sz;i++)
{
printf("%d",*(p+1));
}//p+i--->&arr[i]
return 0;
}
#include<stdio.h>
int main(){
int  arr[]={1,2,3,4,5,6,7,8,9,19};
int *p=&arr[0];
int i=0;
int sz=sizeof(arr)/sizeof(arr[0]);
for(i=0;i<sz;i++)
{
printf("%d",*p);
p++;//p=p+1
}
return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值