首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

对基准c++各种名词或喜欢咬文嚼字的人帮个忙吧

2012-10-08 
对标准c++各种名词或喜欢咬文嚼字的人帮个忙吧!C/C++ codevoid compare1(const char (&v1)[2]){cout v1

对标准c++各种名词或喜欢咬文嚼字的人帮个忙吧!

C/C++ code
void compare1(const char (&v1)[2]){    cout << v1 << " " << &v1 << endl;    cout << *v1 << endl;    cout << v1[0] << endl;}void compare2(const char (*v1)[2]){    cout << v1 << " " << *v1 << endl;    cout << *v1 << endl;    cout << v1[0] << endl;}int main(int argc, char *argv[]){    compare1("a");    compare2(&"a");    cout << endl;    system("pause");    return 0;}

compare2中的v1毫无疑问是个指针,但compare1中的v1呢?
它具有了指针的性质,但在cout<< v1时,两个函数的表现不一样!
compare1输出"a",compare2输出地址!
那么v1到底算是什么东西呢?
ps:这其实是我一个帖子里的讨论内容,我现在专门提出来问!因为大部分人说是指针,可又没有论据!

[解决办法]
compare2 中用
typeid分别输出一下 v1 *v1
[解决办法]
#include "stdafx.h"

char c [5]="1234";
char(*p)[5] = &c;//这是定义的行指针,那么p就应该存放的是指向一行数据的地址,需要取这个数组的地址
char *q =c;//q存放的是是c数组第一个元素的指针、跟上面的一个p意义是不一样的
char(&d)[5]=c;//这里定义的是数组的引用
int main(int argc, char* argv[])
{

printf("%p %p\n",c,p);//虽然输出的值是一样的,但是代表的意义是不一样的
printf("%c %c ", *d,*(d+1));//这就说明数组的引用是一般的指针
printf("%c %c ",*(*p),*(*p+1));//这是行指针的,用法,

//综上说明,
return 0;
}

可以运行这个程序,看看输出结果就知道怎么回事了,还有一个&"abcd",这个用法编译器不报错吗

这个程序中,设计到了指针,行指针,数组的引用,区别和联系,你可以稍微改动一下就可以测试出,各个东西的区别

热点排行