C++学习宝典(笔记)(6)

2019-07-13 16:41

输出其它地址:是地址

输出字符串数组名:是从字符串首地址开始到‘\\0’为止的字符串 输出其它数组名:是个地址

可以能过变量名(直接访问)和*p来得到变量(间接访问) p1是保存地址的变量

*p1是保存地址中变量的变量 给*p1赋值,p1的值不会改变

如int *p; char c;

p=&c;//错误不可以将char* 赋给int *

//用指针作形参:可以在函数中改变实参的值。

//一个指针总是占有4个字节的指针 //形参中的数组,实质是一个指针。 void print(double a[],int n) {

cout<

int main() {

double a[5]={1.1,2.2,3.3,4.4,5.5}; cout<

字符串指针------------(以下一、二、三的区别)

一、/字符串常量-------------在内存中是匿名的字符数组,放在静态存储区。 const char *p=\加上const,表示*p所指向的变量是常量,不能再被赋值,而p是一个指针变量可以再被 赋值 如:

*p=\错误。

p=\正确。因为这个是p中所保存的地址改变,并没有去改变p中地址的值

二、char* const q;表示指向字符串变量的指针常量,---就是说q不可以再被赋值,而*q可以再被 赋值。

三、指向字符串常量的指针常量-------------指针常 量表示指针中的地址不可以再被赋值,*q也不可以再被赋值 const char* const q=\, cout<

q=\错误 ,q的地址不可以在改变

注意:凡是常量都应该初始化,如有了默认值,再赋值,错误。因为不会再有每二次机会再给他赋值 /*

命令行参数:argv[0]=\用户输入 \ argc至少为1 */

int main(int argc,char* argv[]) {

cout<<\ for(int i=0;i

cout<<\ }

return 0; }

注意:加头文件-------#include

atoi(argv[i]):把一个命令行上的数字字符串转化为整数 atof(argv[i]):把一个命令行上的数字字符串转化为实数 itoa:把一个整 数转化为一个数字字符串

结构指针:保存结构变量地址的指针 注意:C中不能直接使用结构体名,要struct 结构体名 结构体变量={};--------而C++可以 结构体名 结构体变量={}; C中可以type struct 结构体名{。。。。。} 新名字;

//实参是结构体变量的地址,形参是指向结构体变量的指针 struct Product{ char name[20]; double price; };//注意分号

void show( Product* p) {

cout<<(*p).name<<\写两种表示方法等价

cout<name<<\表指向结构体变量的name属性的值 }

int main() {

Product a={\冰箱\ show(&a);// }

//二级指针:保存指针地址的变量 int a=10; int *p=&a;

cout<<\cout<<\int** r=&p;

cout<<\是&p的地址

cout<<\是&p中的内容,即&a cout<<\是&a中的内容,即a cout<<\是**r本身的地址

int***** k=NULL;(防止野指针)----称为空指针

cout<<\结果k=0表示指向地址为的地方

如:strcpy(到,串) ------也可以像操作字符串一样,操作内存 memcpy(到,从,字节数); //内存的复制 memset(地址,数据,字节数) //内存的填充

memcmp(地址1,地址2,字节数)//比较两块内存的大小

下面程序完成内存的复制 /*

void*表示不管什么类型的地址。

用到const,表示所指向变量 是个常量 */

void Copy(const void* from,void* to,int bytes)//形参是两个指向任何类型的指针,所以下面要强制类型转 换 {

char* f=(char*)from;//转 换在char*,任何一个类型都可以一个字节一个字节的操作。是因为指针++表一个字节 char* t=(char*)to;

for(int i=0;i

int main() {

double d1=123.456,d2=567.123; int n1=123456,n2=4556;

int a1[5]={11,12,13,14,15}; int a2[8]={0};

Copy(a1,a2,sizeof(a1));//把a1内存地址中的内容复制到a2内存地址中

Copy(&d1,&d2,sizeof(d1)); Copy(&n1,&n2,sizeof(n1)); for(int i=0;i<8;i++)

cout<

cout<<\结果:d2=123.456

cout<<\结果:n2=123456 }

指向函数的指针:一个函数在编译时被分配一个入口地址,这个函数的入口地址就称为函数的指针,

(可以用一个指针变量指向一个函数,然后通过该指针变量调用些函数)

void f1(int n) {

cout<

int main() {

cout<<&f1<

cout<<\转 换在void*输出函数的地址,

cout<<\函数的地址,可以和数组地址一样,不用&

typedef void A(int n);//将void类型 有参数的函数,取别名A A* q=f1;

q(5);//调用f1,传入参数5

void(*r)(int n)=f2;//定义一个指向函数的指针,该函数返回值为void ,传入参数为一个int,

r(123);//调用f2,传入参数123-----和上面的方法等价,但上一种比较笨拙 } /*

函数的指针作为形参;这样函数由第三方来调用,函数有更好的通用性。 */

bool rule(int x,int y) {

return x>=y; }

bool rule2(int x,int y)//比个位 {

return x>=y; }

int findmax(int a[],int n,bool(*p)(int,int)) {

int m=a[0];

for(int i=1;i

if(!p(m,a[i])) m=a[i]; }

return m; }

//rule()是一个规则:用来比较两个数据,如果符合规则就返回true,否则就返回false

int main() {

int a[5]={1,95,520,12,52};

cout<

cout<

*********************************************************************************************

*********************2010年09月14日 星期二 09时55分19秒 (第八天)********************************** 指针数组:一个数组,其元素均为指针 int *p[5];

(p与[]结合,表p是数组,再与*结合,表示此数组每个元素是int *

区别于数组的指针:int (*p)[];

(p与*结合,表示p是指针,表示它指向int[]

成员指针: /*

int Date::*p 表int型的Data成员的地址。

for(int i=0;i

cout<

for(int i=0;i

for(int i=0;i


C++学习宝典(笔记)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:美学概论试题及答案1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: