- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指针知识点总结
指针12—24分:
指针与指针变量的概念、指针与地址运算符。
变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量,通过指针引用以上各类型数据。
用指针作函数参数。
返回指针值的指针函数。
指针数组指向指针的指针。
main函数的命令行参数。
知识归纳:
1.指针的概念。
指针:就是内存中的一个存储地址。
指针变量:是一个变量它存放的它所指向的变量。2.指针变量的定义。
类型 *指针变量名
类型说明中可取C语言的有效类型,* 表示为指针型变量。如:
char *c1,*c;
表示c1与c2是指针变量,其类型是字符型。注意:指针的类型与所指向的变量的类型要统一。(1),例:
int x; int *p=x; 或 int x?*p; p=x?;
(2)用间址运算(运算符为*)访问所指变量,例:
*p=5;//用作左值时代表所指的变量
x=*p+9;//.指针。
优先级是相同的,但从右向左结合。
:*a等同于a; *pa。
*p++等同于*(p++)
(4)(*p)++与*p++)。(*p)++是变量值增值,相当于a++;而*(p++)则是用完当前值后,指针值增值,即p++,是指向了新的地址。.指针与数组: (1)用数组名a,(2)取首元素的地址,即a[0]
(3)数组指针:指向数组的指针变量的简称,即指针变量是数组的首地址int a[10],*p;p=a;p,(p+1),(p+2),…,(p+9)a[0],a[1],a[2],…,a[9]。
*p,*(p+1),*(p+2),…,*(p+9) a[0],a[1],a[2],…,a[9]。…
方式二,指针名[下标],例如 p[0],p[1],…
方式三,*(指针名+下标),例如 *p,*(p+0),*(p+1),…
方式四,*(数组名+下标),例如 *a,*(a+0),*(a+1),…
(在C中,数组名就是第一个元素的地址,因此对数组的引用可以直接用*a表示a[0],用*(a+1)表示a[1],用*(a+2)表示a[2],…,用*(a+9)表示a[9]。#include stdio.h
void fun(int a,int b)
{ a++; b++; }
void main()
{
int x=3,y=4,z;
fun(x,y);
printf(%d,%d\n,x,y);
}
例2:传址调用(形参为指针,调用后形参值影响实参)
#include stdio.h
void fun(int *a,int *b)
{ (*a)++; (*b)++; }
void main()
{
int x=3,y=4,z;
fun(x,y);
printf(%d,%d\n,x,y);
}
例3 传址调用(形参为指针,可利用此类形参返回多个结果)
#include stdio.h
void fun(int a,int b, int *c,int* d)
{ *c=a+b; *d=a*b;}
void main()
{
int x=3,y=4,k,j;
fun(x,y,z,j);
printf(%d,%d\n,k,j);
}
例4 传址调用(形参为数组名)
#include stdio.h
void fun(int b[],int i)
{ b[i]=0; }
void main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9}, i;
fun(a,5);
for (i=0;i10;i++) printf(%d,a[i]);
}
7.指针与数组 char str[20];
str=Good luck!;
而对字符指针变量,可以采用下面方法赋值:
char *str;
str=Good luck!;
赋给str的不是字符,而是字符串第一个元素的地址。
(3)输入方式不同。
对字符数组可用如下方式赋值:
char str[20];
scanf(%s,str); //ok
但对字符指针变量则不建议用此方式,因为会发生指针的异常指向,正确做法为:
char *str,a[20];
str=a; //使指针有明确的指向
scanf(%s,str);
(4)字符指针变量的值是可以改变的,而字符数组名的值是不可以改变的。
例1:#include stdio.h
void main()
{
char *str=Good luck!;
puts(str);
str+=5; //ok
puts(str);
}
例2:
#include stdio.h
您可能关注的文档
最近下载
- 新外研版高中英语必修三Unit 3 The world of science Period 1 Starting out & Understanding ideas说课稿.doc
- 项目回款登记表.xlsx VIP
- 《药品记录与数据管理要求》解读.pptx
- 购物广场商场超市消防安全知识培训PPT.pptx VIP
- 油田运输有限公司HSE管理的体系程序文件.doc
- 人教版2022-2023学年二年级数学第一学期期中测试卷(含答案).docx
- 全科医师培训课件.pptx
- 汉字听写大会试题库(附答案).pdf VIP
- 专科医生如何带教全科医生课件.pptx
- 2024小学生汉字听写大会竞赛试题库(附答案).docx VIP
文档评论(0)