- 1、本文档共141页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章;表示复杂的数据结构
动态分配内存
有效地使用字符串、数组
在调用函数时能得到多个返回值
能直接处理内存地址;§8.1地址和指针的概念;2、变量i的地址存放在另一个变量p中,通过变量p获得变量i的地址,再对变量i进行存取变量值的方式称为间接访问。;我们把这种专门用来存放变量地址的变量称作是指针变量。;一个变量的地址称为该变量的指针。
如,地址2000就是变量i的指针。
用来存放另一个变量的地址(指针)的变量,称为“指针变量”。
如 i_pointer 变量。;§8.2 变量的指针和指向变量的指针变量;;使用取地址运算符得到一个变量的地址, 将其赋值给指针变量。
int i, j, * pointer_1, * pointer_2;
pointer_1= i;
pointer_2= j;
于是:
pointer_1 指向 i
pointer_2 指向 j;#include stdio.h
void main()
{
int i= 5, j= 6;
int *i_pointer, * j_pointer;
i_pointer = i;
j_pointer = j;
printf(i= %d, i= %d\n, i, i);
printf(i_pointer= %d\n, i_pointer);
printf(*i_pointer= %d\n, *i_pointer);
printf(\nj= %d, j= %d\n, j, j);
printf(j_pointer= %d\n, j_pointer);
printf(*j_pointer= %d\n, *j_pointer);
};;;#include stdio.h
void main()
{
char ch=a, * ch_pointer= ch;
short int sint_I= 5, * sint_I_pointer= sint_I;
float float_j= 6, * float_j_pointer= float_j;
double double_k=4, * double_k_pointer= double_k;
printf(ch_pointer= %d\n, ch_pointer);
printf(ch_pointer+1= %d\n, ch_pointer+1);
printf(\nsint_I_pointer= %d\n, sint_I_pointer);
printf(sint_I_pointer+1= %d\n, sint_I_pointer+1);
printf(\nfloat_j_pointer= %d\n, float_j_pointer);
printf(float_j_pointer+1= %d\n, float_j_pointer+1);
printf(\ndouble_k_pointer= %d\n, double_k_pointer);
printf(double_k_pointer+1= %d\n, double_k_pointer+1);
};8.2.2 指针变量的引用 ;和*为一元运算符,优先级很高。运算时“从右向左”
1. *pointer 等价于pointer 等价于 a
先进行*pointer运算, 得到变量a, 再执行运算。
2. *a 等价于 a 等价于*pointer
即先进行a 运算, 得到a的地址, 再执行*运算
在一个表达式中,如果*和紧密相连在一起时,可以理解为: 两个运算相互抵消。;#include stdio.h
void main()
{
int a=7;
int *aPtr;
aPtr= a;
printf(a的地址 a 是:%p, 指针 aPtr 为:%p \n \n, a, aPtr);
printf(a的值为:%d, 指针指向的值 *aPtr :%d\n, a, *aPtr);
printf(\n如果和*相连出现,则等价于和*互相抵消\n
*aPtr = %p, *aPtr = %p, *aPtr, *aPtr);
};例8 . 2 输入a和b两个整数,按先大后小的顺序输出
文档评论(0)