C++程序设计(谭浩强)笔记四

第四章指针与引用的使用

一、变量与指针

1.指针的定义
  • 数据类型 *变量名——指针变量
  • int i; int *point=&i;
  • &a——表示变量a的地址,*p——p所指向的单元
2.指针做参数
void swap(int *p1,int *p2){
    int temp;
    temp=*p1;
    *p1 = *p2;
    *p1=temp;
}
  • 参数传递只能是实参到形参,

二、数组与指针

int a[10];int *p;
p = &a[0];
p=a;
*(a+i)==*(p+i)
  • 定义函数时,传递数组实参时,可以直接将数组名传递过去。
  • 即 void select_sort(int array[],int n)等价于void select_sort(int *array,int n)

三、字符串、函数与指针

char *str;
str = "I love China";
//指向函数的指针变量
int max(int x,int y);
int (*p)(int x,int y);
p = max;
p(a,b);
//指针函数的定义
int *a(int x,int t);
  • 指向函数的指针变量:函数类型(* 变量名)(函数参数表)

四、指针数组和指向指针的变量

1.指针变量
  • 指针数组的定义:类型名 *数组名[数组长度]——其元素全部为指针数据的类型。
  • p = *(name+i++):先求*(name+i)的值,然后赋值给p,再将i+1。
  • void print(char *name[],int n)
2.指向指针的变量
  • char *name={basic,for,c++,pascal,cobol}
  • char ***p;则*p是指c++,****p是指c

五、const指针

1.指向变量的常指针
  • 不允许通过指针变量来改变它所指向的对象的值——const 类型名 *指针变量名
  • 类型名 * const 指针变量名——不允许改变指针指向
  • 强制转化——p1 = (int*)p2

六、引用

  • int a;int &b = a;——b是a的别名
  • 引用不能重复使用,不能建立引用的引用,没有引用的指针,但是有引用的地址。
  • 引用实质是开辟一个新空间,在其中存放值的地址
void swap(int &a,int&b){
    int temp;
    temp = a;
    a=b;
    b=temp;
}

第五章用户自定义数据类型

一、结构体类型

  • 定义——struct 结构体类型名{成员表}变量1,变量2;创建了两个结构体类型
  • 初始化——在定义变量1 ={‘1001’,‘yige’}或者在后面初始化
  • 引用——结构体变量名.成员名或者(*p).成员名或者p->成员名
  • 指向结构体变量的指针——结构体类型名 *p=结构体变量名
  • sturct *next;

二、动态分配存储空间

  • new 类型 [初值]——new int(100)或者是p = new Student;
  • delete 指针变量或者delete [] 指针变量

三、枚举类型及typedef类型

  • enum 枚举类型名 {枚举常量表}并分别依次赋予0,1,2,3,…
  • typedef int INTEGER 则int i==INTEGER i;
  • typedef struct 结构体类型名{成员表}Date Date是结构体类型名·——Date ditrhday
  • typedef int NUM[100],NUM n;——定义n为包含100个整型元素的数组
  • typedef char *STRING;STRING p,s[10]——声明string为char *类型
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Indra_ran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值