笔试复习_C++_指针(一)
2017-09-01 16:22
162 查看
*今天开始找一个地方存放复习资料~!
想到哪写哪吧_(:з」∠)_*
指针(一)
指针
定义:特殊类型变量,用来存放变量的地址。
一个变量的地址称为这个变量的指针;一个变量专门用来存放变量的地址,称为指针变量。
指针变量定义后,系统为之分配存储单元用来存放地址,长度为4字节(32位系统)。
类型名 *指针变量名[=<指针表达式>]
类型名:指针变量用来指向的类型。
*表示定义的是指针变量
例:
取地址运算符&
用来返回操作数的地址,与一个变量或者数组元素连用。通过&可以将某一个元素的地址赋给指针。
例:
指针使用之前要先进行赋值,否则不确定。
间接访问运算符*
用来返回操作数所指的变量,与一个指针连用。
二级指针变量
类型名 ** 指针变量名
是指向指针变量的指针。
例:
指针数组
类型名 ** 指针数组名[元素个数]
一系列指针变量的集合。每一个元素都是一个指针变量,具有相同的存储类型,指向相同的数据类型。
例:
由p[0]和p[1]两个指针组成。都指向int类型数据。
指向常量的指针
const 类型名 *指针变量名[=<指针表达式>]
指针所指的对象是常量。(*p不可以修改,p可以修改)。
例:
a不可以通过*p修改,但是可以通过a修改。
指针常量
类型名 * const 指针变量名[=<指针表达式>]
指针(p)不可以再指向其他对象,但是*p内容可以修改。
指针与一维数组
每个数组的起始地址称为数组的指针。一维数组的数组名就是起始地址,是一个指针常量。
a与&a[0]等价,所以
或
通过指针可以访问数组元素,例如给a[0]赋值为5:
通过引用可以访问数组元素,例如给a[3]赋值为5:
无论数组类型如何,如果指针p指向数组一个元素,那么p+1就指向数组下一个元素。
若*p=a[0],那么
p+i和a+i等价,表示数组第i个地址,即&a[i]。
p也可以带下标。p[i]与*(p+i)等价,为a[i]。
指针与二维数组
二维数组的数组名表示整个数组的首地址。
a表示a[0]的地址,即&a[0]。a+1表示a[1]的地址,即&a[1]。
所以,a+i表示a[i]的地址,即&a[i],是一个指向一维数组的指针。
a[0],a[1],a[2]是一维数组名,表示一维数组的首地址。
a[0]即是&a[0][0],a[1]是&a[1][0]。a[i]是&a[i][0]。
a[0]+i表示&a[0][i]。
*(a+i)等价于a[i]。
*(a+i)+j等价于a[i]+j,即&a[i][j]。
所以数组元素a[i][j]可以表示为:
(a[i]+j)、((a+i)+j)、(a+i)[j]。
例题
1.下面程序的输出结果是?
解:
可以通过下标访问,所以p[0][0]指数组第一个元素,为10。
p[0]指数组第一行的地址,p[0]+1就是p[0][1]的地址为&p[0][1],所以*(p[0]+1)为20。
*p就是p[0],所以(*p)[2]就是p[0][2]为30。
一维数组:
a <=> &a[0]
a+1 <=> &a[1]
*(a+1) <=> a[1]
二维数组:
a[0] <=>&a[0][0]
a[1]+1 <=> &a[1][1]
*a[0] <=>a[0][0]
*(a[1]+1 ) <=> a[1][1]
2.若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句错误的是:
解:
p是指向char类型的指针。
s是二维数组首地址,s[0]的地址,是一个指向大小为10的一维数组的指针。
k是char类型,指向大小为3的一维数组的指针。
s[0]是一维数组首地址,表示&s[0][0]。
所以p和s、p和k、k和s的类型不同,1、2和4错误。
想到哪写哪吧_(:з」∠)_*
指针(一)
指针
定义:特殊类型变量,用来存放变量的地址。
一个变量的地址称为这个变量的指针;一个变量专门用来存放变量的地址,称为指针变量。
指针变量定义后,系统为之分配存储单元用来存放地址,长度为4字节(32位系统)。
类型名 *指针变量名[=<指针表达式>]
类型名:指针变量用来指向的类型。
*表示定义的是指针变量
例:
int *p;
取地址运算符&
用来返回操作数的地址,与一个变量或者数组元素连用。通过&可以将某一个元素的地址赋给指针。
例:
int a=1; int *p; int p=&a;
指针使用之前要先进行赋值,否则不确定。
间接访问运算符*
用来返回操作数所指的变量,与一个指针连用。
二级指针变量
类型名 ** 指针变量名
是指向指针变量的指针。
例:
int a=1; int *p=&a; int **pa=&p;
指针数组
类型名 ** 指针数组名[元素个数]
一系列指针变量的集合。每一个元素都是一个指针变量,具有相同的存储类型,指向相同的数据类型。
例:
int *p[2];
由p[0]和p[1]两个指针组成。都指向int类型数据。
指向常量的指针
const 类型名 *指针变量名[=<指针表达式>]
指针所指的对象是常量。(*p不可以修改,p可以修改)。
例:
int a=1; const int *p=&a;
a不可以通过*p修改,但是可以通过a修改。
指针常量
类型名 * const 指针变量名[=<指针表达式>]
指针(p)不可以再指向其他对象,但是*p内容可以修改。
指针与一维数组
每个数组的起始地址称为数组的指针。一维数组的数组名就是起始地址,是一个指针常量。
int a[10]; int *p;
a与&a[0]等价,所以
p=a;
或
p=&a[0];
通过指针可以访问数组元素,例如给a[0]赋值为5:
int a[10]={0}; int *p; p=a; *p=5;
通过引用可以访问数组元素,例如给a[3]赋值为5:
int a[10]={0); int *p; p=&a[3]; *p=5;
无论数组类型如何,如果指针p指向数组一个元素,那么p+1就指向数组下一个元素。
若*p=a[0],那么
*(p+i)=a[i]
p+i和a+i等价,表示数组第i个地址,即&a[i]。
*(p+i)与
*(a+i)等价,表示数组第i个元素,即a[i]。
p也可以带下标。p[i]与*(p+i)等价,为a[i]。
指针与二维数组
二维数组的数组名表示整个数组的首地址。
a表示a[0]的地址,即&a[0]。a+1表示a[1]的地址,即&a[1]。
所以,a+i表示a[i]的地址,即&a[i],是一个指向一维数组的指针。
a[0],a[1],a[2]是一维数组名,表示一维数组的首地址。
a[0]即是&a[0][0],a[1]是&a[1][0]。a[i]是&a[i][0]。
a[0]+i表示&a[0][i]。
*(a+i)等价于a[i]。
*(a+i)+j等价于a[i]+j,即&a[i][j]。
所以数组元素a[i][j]可以表示为:
(a[i]+j)、((a+i)+j)、(a+i)[j]。
例题
1.下面程序的输出结果是?
include<iostream.h> void main() { int n[][3]={10,20,30,40,50,60}; int (*p)[3]; p=n; cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl; }
解:
可以通过下标访问,所以p[0][0]指数组第一个元素,为10。
p[0]指数组第一行的地址,p[0]+1就是p[0][1]的地址为&p[0][1],所以*(p[0]+1)为20。
*p就是p[0],所以(*p)[2]就是p[0][2]为30。
一维数组:
a <=> &a[0]
a+1 <=> &a[1]
*(a+1) <=> a[1]
二维数组:
a[0] <=>&a[0][0]
a[1]+1 <=> &a[1][1]
*a[0] <=>a[0][0]
*(a[1]+1 ) <=> a[1][1]
2.若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句错误的是:
1.p=s; 2.p=k; 3.p=s[0]; 4.k=s;
解:
p是指向char类型的指针。
s是二维数组首地址,s[0]的地址,是一个指向大小为10的一维数组的指针。
k是char类型,指向大小为3的一维数组的指针。
s[0]是一维数组首地址,表示&s[0][0]。
所以p和s、p和k、k和s的类型不同,1、2和4错误。
相关文章推荐
- 笔试复习_C++_指针(二)
- C++第9周项目 数组和指针 【项目3-人数不定的工资类】(复习新版)
- C/C++复习(7):指针
- C++复习5.指针数组字符串
- [C/C++]一道指针,内存布局的笔试题[摘自CSDN]
- C++笔试总结-面试笔试常考题型(一)指针-引用-宏定义-sizeof
- 笔试复习_C++_类(一)
- C++ 指针与const的组合复习
- 常考的开发笔试题 c++里有关指针的内容中,const的位置对指针含义的影响?
- C++复习 04 数组和指针
- c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系
- 【重新上本科】从一道笔试题来看数组和指针的区别(c++)
- c++ 智能指针—— c++复习(八)
- C++面向对象复习(四)——指针在面向对象中的应用
- C++指针详解(复习一下)
- C++基础复习---1(函数指针,指针函数)
- C++指针知识的复习与简单总结
- [笔试题 2][c/c++]关于指针直接赋值问题
- C/C++指针的经典笔试面试题
- C/C++复习:数组作实参,指针作形参排序