char a[5] = "abcd";
cout<<(void *)a<<endl;
cout<<(void *)&a<<endl;
cout<<(void *)&a[0]<<endl;
上面三个语句输出结果是一样的,但是如何才能获得a这个指针变量(好像又不是指针变量?)的地址?
如何获得字符串的指针地址?
答案:3 悬赏:0 手机版
解决时间 2021-04-07 14:03
- 提问者网友:欲劫无渡
- 2021-04-07 02:32
最佳答案
- 五星知识达人网友:神的生死簿
- 2021-04-07 03:49
看楼主对数组与指针的概念有些混淆!
char a[5] = "abcd";
这个定义中有两个量,一个是变量,一个是常量
变量是-----a 它是一个数组,有五个元素(或说可存储五个字符,最后一个一定是'\0'),a是数组名,代表一个地址,不能被改变,更不能称a为指针,但可以通过a找到这个数组的位置,对地址中的数据进行操作(这也是称a为变量的原因)。常量是-----"abcd"。上面的定义是:定义一个数组(分配内存空间),将常量值"abcd"存入a中。
这与char *p="abcd";的定义的意义是不同的-----p是指针变量,它指向常量"abcd"所在的地址。
char a[5] = "abcd";
这个定义中有两个量,一个是变量,一个是常量
变量是-----a 它是一个数组,有五个元素(或说可存储五个字符,最后一个一定是'\0'),a是数组名,代表一个地址,不能被改变,更不能称a为指针,但可以通过a找到这个数组的位置,对地址中的数据进行操作(这也是称a为变量的原因)。常量是-----"abcd"。上面的定义是:定义一个数组(分配内存空间),将常量值"abcd"存入a中。
这与char *p="abcd";的定义的意义是不同的-----p是指针变量,它指向常量"abcd"所在的地址。
全部回答
- 1楼网友:走死在岁月里
- 2021-04-07 05:38
int i=(int)&a;
cout<<i<<endl;
i就是地址了
- 2楼网友:舊物识亽
- 2021-04-07 04:37
sizeof是一个获得某个对象变量或数据类型在内存中所占字节的函数.
指针变量的sizeof值与指针所指的对象内容是没有任何关系的,因为同一类型的指针变量所占内存大小都是相等的。
所以
char* pc = "abc";
char* pi="dfewr";
char* ps="erwqrerweqr";
sizeof( pc ); // 结果为4
sizeof( pi ); // 结果为4
sizeof( ps); // 结果为4
如果你要取得一个字符串的长度(不包括结束符\0),应该使用字符串处理函数 strlen
int size=strlen(p)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯