指针
1.指针的声明和使用
(附带new分配内存)
(附带数组)
int*ptr=&red;//声明指针
cout<<(int*)red<<endl;//强制转换来取地址
int*ptr=new int;//分配内存,此时ptr为指针,可以给其指向赋值
*ptr=10;
delete ptr ; // 释放内存
int *ptr = new int[10];/delete ptr ; //数组的动态分配内存
//ptr=&ptr[0]
char*wren="brids" ;//合法,取得birds的首地址给了wren
//上面也在后面几章讲到过,干脆提前吧
cin>>birds;//输入字符串,也可以直接输入地址,虽然没有意义
cout<<(char*)ptr;//打印字符串
cout<<(int*)ptr;//打印字符串的地址
也可以cout<<(void*)ptr;
1.1关于数组名
如有数组array,其地址=其第一个元素地址=array;
可以array+num来访问其中每个元素地址;
1.2
cout输出时,永远取得是char类型字符串/数组的首地址
1.3使用strlen(),strncpy(),strcpy();
int a = strlen(b) ; //测量b的长度,但是不计算空字符,char数组末尾恒有‘/0’
char*c=new char[strlen(b)+1]//如果要把b中内容复制给c而且c为动态内存
strncpy(a,"adk...",19); a[19]='/0'; //因为函数不会自动给空符所以要自己
给,作用是把" "内的19个元素复制到a中
strcpy(ptr,a);//把a中内容复制到ptr中,也不自动带/0
1.4动态分配内存(结构体)
第2篇文章有。
1.5指针数组初识
struct a {int year};
a ptr1;
a trio[3];
a*arp[3]={&b,&c,&d};//这里bcd都是a对象
cout<<arp[1]->year;//也可以*(arp[1]).year
auto prd = app ; //c++11自动类型判断
1.6容器的简单使用(略)