没有合适的资源?快使用搜索试试~ 我知道了~
指针含义、指针&和*运算符、*p++ *p— (*p)++ (*p)-- *++p *--p、二维数组的访问、指向二维数组的指针元素及指针指向二维数组的一维数组的指针、数组指针作为函数参数的四种形式以及字符数组与指针的关系 区别和拷贝
资源推荐
资源详情
资源评论
第一次写这个,有点乱,希望不要介意
有同样爱好者请加QQ 1426216071
自编案例总结指针的两层含义,及反向证明
main.cpp
#include <stdio.h>
void main()
{
int a=10,b;
int *p;
//b=&a;//报错
b=(int)&a;
printf("%p",*b);
}
效果图:
main.cpp
#include <stdio.h>
void main()
{
int a=10,b;
int *p;
//b=&a;//报错
b=(int)&a;
p=&a;
printf("%d",b);
printf("%d",p);
printf("%d",*p);
}
效果图:
总结:指针的两个特性:1.指向关系 2.指针既地址。指针是一种数据类型,无论什么类型的指
针在内存中都是分配 4 个字节(32 位的计算机中)因为指针其实是一个无符号的整型常量。
自编案例总结指针&和*运算符以及指针的赋值,算术(++ -- + -)以及关系运算符。
main.cpp
#include <stdio.h>
void main()
{
//&和*运算符的使用
int a=10;
int *p=&a;
printf("a=%d\n",a);
printf("&a=%p\n",&a);
printf("*&a=%d\n",*&a);
printf("**&p=%d\n",**&p);
//算术运算符
int arr[5]={3,4,5,6,2};
int *p1=arr;
int *p2=&arr[2];
printf("arr=%p\n",arr);
//指针自增
p1++;
printf("p1=%p *p1=%d\n",p1,*p1);
p1=p2+2;
printf("p1=%p *p1=%d\n",p1,*p1);
//printf("%d\n",p1+p2);//两个指针不能进行相加
//指针自减
p2--;
printf("p1=%p p2=%p\n",p1,p2);
//两个指针的相减
printf("p1-p2=%d\n",p1-p2);
//关系运算符
int x=p1>p2;
int *p3=&x;
x=p>p1;
printf("p=%p p1=%p p>p1 的返回值:x=%d\n",p,p1,x);
x=p<=p3;
printf("p=%p p3=%p p<=p3 的返回值:x=%d\n",p,p3,x);
}
效果图:
总结:对于&和*:&表示取某个变量的地址,而*在不是申明指针的时候则是表示取内容,取
某个地址中的内容。申明一个指针仅仅是申请了一块内存存储该指针变量的地址,而并没
有申请一块内存来存储该内存指向变量空间的地址,所以对于指针的使用之前必须要赋值
赋值的地址必须与指针声明时所要求指向类型变量的类型保持一致。
如将指针进行赋的地址是一个数组的地址,则可通过对指针进行++ --的操作,表示指针的
上下移动,指针的++ --每次移动的字节数是由指针指向变量的类型决定的。如一个 int*型
的指针,每++一次,则是移动四个字节。(在 32 位的操作系统中)所以指针每加 n,则指
针所移动的字节数是 n*sizeof(类型)。指针之间不能进行+的操作。任意类型的指针之间都
可进行比较运算的操作,即是地址之间的比较。
自编案例总结*p++ *p— (*p)++ (*p)-- *++p *--p
main.cpp
#include<stdio.h>
#define N 5
void main()
{
int arr[N]={12,34,45,56,78};
int *p=arr;
//指针的移动
剩余14页未读,继续阅读
资源评论
smile_happygril
- 粉丝: 3
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功