(1)
地址
01.cpp
:
C/C++
程序运行时,各种数据类型(常量,变量,函数,数组,结构,对象等)在内存中都有地址,知道地址即可取得它们的内容,可用“取地址操作符”
&
得到地址
(
2
)
指针
1
指针是存放另一变量地址的变量;在
C/C++
中,说明它的一般形式为
: "
数据类型
*
指针名
"
2
指针说明时的数据类型不是指针变量本身的类型,而是指针指向的目标的数据类型;
例如
int *p
是说在地址
p
处的
int
型变量
3
指针操作符有
&
与
*; &
后跟变量名
,
其作用是返回被操作变量的内存地址
; *
是
&
的逆运算
,
其操作对象是指针表达式
,
并返回指针表达式所指内存单元中的值
.
例如
:
int I; int *p; p=&I;
是把变量
I
的地址赋给指针变量
p.
4
可以把一个指针的值赋给另一个指针
;
指针可同整数加减
;
不能对两个指针进行加减
,
更不可乘除
;
两个指针可以进行比较
.
(
3
)
指针的声明与赋值
02.cpp
:
指针需先声明方可使用,而在使用之前,必须给指针赋值
(
4
)
函数的传值与传址调用
int sum1(int n); int sum2(int *n); //
计算
1+2+...+n
的两个函数
(
5
)
指向函数的指针:
0533.cpp 定义动态数组实现:用户输入一个数max,输出从0到max间的所有整数
0534.cpp 在函数内改变结构的成员,要把一个指向结构的指针作为函数参量,在函数内使用:pointer->member,或:(*pointer).memeber 的方式引用结构指针的成员
(6) 数组、字符串,指针数组与数组指针,结构
数组名即表示数组的首地址
;
不带下标的数组名是指向数组的指针,表示数组的开始地址,例如:
char str[60], *p; p=str;
数组名
str
产生指向数组第一个元素的指针;也可用
&
得到数组第一个元素的地址:
p=&str[0];
可用
*(p+4)='b';
或
str[4]='b';
为该数组的第五个元素赋值。可用三种方式说明数组,例如:
int x[10]; int *x;
或
int x[ ];
0501.cpp
用指针遍历数组(显示字符串函数)
0529.cpp
指向函数的指针与返回值为指针的函数
0532.cpp
指针数组:
与返回值为指针的函数类似,可以建立指针数组(元素为指针类型的数组),主要用来存放字符串(指向字符串的指针),例如:
char *letters[3]={“AA”,”BB”,”CC”};
编译器如下存放这个数组:
A A /0 B B /0 C C /0
(注意:与字符串不同,不用
NULL
结束)
指针指向每个(这里是
3
个)字符串的开头。
(
7
)动态数组、动态内存分配
程序运行期间动态建立而不是通过数组说明建立的数组称为动态数组;建立动态数组要使用
stdlib.h
中的库函数
malloc
和
free
来分配和释放内存单元;例如要建立一个
double
类型的动态数组,先要说明一个指向
double
对象的指针:
double * pd;
然后由下面语句建立所需大小(例如
100
)的内存空间,并让指针指向这个空间:
pd = (double ) malloc(100*sizeof(double))
。当无足够连接的内存时,分配失败,返回空指针
(NULL,0)
。
程序07.cpp
用户输入一个数
max
,输出从
0
到
max
间的所有整数,及其平方,立方和
4
次方:用二维动态数组实现,注意:
int (*pi)[4];
定义动态数组,它是个
2
维数组,行数是
max+1
,列数是
4
;
程序08.cpp
一维方式实现二维数组(上一程序的另一种编法)
程序10.cpp 由月份数查询它的英文名;
程序12.cpp
排序(数组参量);
学习数组的定义、初始化、赋值和使用的方法
学习给函数传递数组的方法
学习指针和引用的定义和使用方法
学习字符串的使用方法
学习用指针和引用给函数传递参数
《作业
1
》用动态内存分配修改
2^n
和大整数的计算,使它通用化;要求:不使用静态数组,而仅使用指针
《作业
3
》随机生成
k
个长
n
的二进串(
k.n
由键盘输入),将它们转换为整数(注意:
n>32
时怎么办)(可用
BITSET
)