指向数组的引用;指向数组的指针;指向类成员的指针;指向类数组成员的指针;二维字符串数组指针
来源:互联网 发布:百度春运迁徙大数据图 编辑:程序博客网 时间:2024/06/06 11:04
int num[10];
int (&rNum)[10] = num;
cout << rNum[1] << endl;
2、指向数组的指针
int num[10];
int (*pNum)[10] = #
cout << (*(pNum))[1] << endl;
注:int[] 和 int*不是同一种类型
补:指针类型数组
int A[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
int *p[3],**pA;
p[0]=A[0];//保存每行的行首地址到指针数组p
p[1]=A[1];
p[2]=A[2];
pA=p;//行首地址指针数组的首地址=》pA,注意是指针的指针。
printf("第1行第2个数%d\n",*(*(pA+1)+2));
3、指向类成员的指针
指向类成员的指针并非一般意义上的指针,它的值并非是一个真实的地址,而像是一个类成员在类中的偏移
struct stru
{
int a;
CString b;
};
int stru::* pA = &stru::a;
CString stru::* pB = &stru::b;
类似于使用普通类成员对象的标识符. 使用类成员指针的关键字是.*或->*
stru s;
s.*pA;// 使用成员a
s.*pB;// 使用成员b
4、指向类数组成员的指针
struct stru
{
int a;
CString b;
TCHAR szE[10];
};
stru s11;
// 定义一个指向stru的szE[10]数组的指针
char (stru:: *pC)[10] = &stru::szE;
// 访问数组用的一个元素
char c = (*(&(s11.*pC)))[1];// VC6,编译器的问题,必须先&再*,绕一下
char c = (s11.*pC)[1]; // VS2010,可直接用
// 访问整个数组
CString ss = (*(&(s11.*pC)));// VC6
CString ss = s11.*pC;// vs2010
5、二维字符串数组指针
// 假设目标是8个长度为5的字符串
int nNum = 8, nLen = 5;
char *pA[1];// 不必定义为 char *pA[8]
// malloc出内存的目的是存字符串,所以它一定是要赋予char*类型
/* 方法1 */
pA[0] = (char*)malloc(nNum*nLen);
memcpy(pA[0], "abc", 4);
memcpy(pA[0] + nLen, "def", 4);
printf("%s\n", pA[0]);
printf("%s\n", pA[0] + nLen);
free(pA[0]);
/* 方法2 */
// 假设有个字符串首地址是m,char*类型的q变量存的是字符串首地址m,
// char**类型的p变量存的则是q变量自身的地址,因此在p和m之间必然
// 需要一个变量充当q的作用,因此单独定义的char** p是无法使用它
// 操作目的字符串的。
char **p;
p = pA;
*p = (char*)malloc(nNum*nLen);
memcpy(*p, "abc", 4);
memcpy(*p + nLen, "def", 4);
printf("%s\n", *p);
printf("%s\n", *p + nLen);
free(*p);
- 指向数组的引用;指向数组的指针;指向类成员的指针;指向类数组成员的指针;二维字符串数组指针
- 指向二维数组的指针
- 指向二维数组的指针
- 指向二维数组的指针
- 指向二维数组的指针
- 指向二维数组的指针
- 指向二维数组的指针
- 指向二维数组的指针
- 指向二维数组的指针
- 指向二维数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- 指向数组的指针
- Facebook进军搜索引擎挑战Google
- 6.python的set、list和dict的解析
- 学习
- ADO.NET Entity Framework简介
- Android编程获取root权限问题
- 指向数组的引用;指向数组的指针;指向类成员的指针;指向类数组成员的指针;二维字符串数组指针
- VC++.NET技术内幕学习一
- Activity栈简析
- 用程序输出一个小房子的程序
- asp.net的aspx 绑定 判断输出《转》
- 用于多种结构体的函数对象
- 解析VMware服务器虚拟化技术
- liunx pipe
- C#基础整理