由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问个指针array 的简单问题
相关主题
C++ formatted output question大家来做题C++。
问个char*的问题小白请教一个C++问题:问什么我不能把两个指针=起来?
一个指向指针的指针的引用?谁来解释一下这个是compiler问题吗?
c++ question问个char * 的问题
菜鸟求教,一个c++的困惑RH3/RH4上cout默认格式问题
array和pointer在作为函数返回时有啥区别 (C)对指针很熟的高手能否给菜鸟分步骤讲解一下这个单链翻转是怎么实现的?
a C++ interview question..........很不习惯cin/cout
C++菜问: 怎么这样也可以?这段code有啥问题?
相关话题的讨论汇总
话题: str话题: printf话题: ch话题: std话题: char
进入Programming版参与讨论
1 (共1页)
N******n
发帖数: 3003
1
书上的例子:
char *p[3]={'a','b','c'}
你如果看visual C++追踪,p[1] is a pointer, *p[1] value =a;
但是你打印这两个值,他们都得到a。
好像从来没有打印出地址的情况。
t***t
发帖数: 6066
2
print is overloaded?

【在 N******n 的大作中提到】
: 书上的例子:
: char *p[3]={'a','b','c'}
: 你如果看visual C++追踪,p[1] is a pointer, *p[1] value =a;
: 但是你打印这两个值,他们都得到a。
: 好像从来没有打印出地址的情况。

N******n
发帖数: 3003
3
我奇怪的是: 打印
p[3]和*p[3]都是一样的结果, 实际上前面是地址。
我同意你下面的分析,你用了&
W*****x
发帖数: 684
4
你把代码贴上来看看。。。
1 #include
2
3 int main(void)
4 {
5 char p_ch[3] = {'a', 'b', 'c'};
6 char *p_str[3] = {"a", "b", "c"};
7
8 printf("p_ch[1] = %c\n", p_ch[1]);
9 printf("p_ch[1] @ %p\n", &p_ch[1]);
10 printf("p_ch[1] @ %p\n", p_ch+1);
11
12 printf("p_str[1] = %s\n", p_str[1]);
13 printf("p_str[1] @ %p\n", &p_str[1]);
14 printf("p_str[1] @ %p\n", p_str+1);
15
16 return 0;
17 }
p_ch[1] = b
p_ch[1] @ 0x7fff903d1881
p_ch[1] @ 0x7fff903d1881
p_str[1] = b
p_str[1] @ 0x7fff903d1868
p_str[1] @ 0x7fff903d1868
N******n
发帖数: 3003
5

你的也一样:printf("p_str[1] = %sn", p_str[1]);
printf("p_str[1] @ %cn", *p_str[1]);
两个都是 b
我的是: std::cout< 也是一样

【在 W*****x 的大作中提到】
: 你把代码贴上来看看。。。
: 1 #include
: 2
: 3 int main(void)
: 4 {
: 5 char p_ch[3] = {'a', 'b', 'c'};
: 6 char *p_str[3] = {"a", "b", "c"};
: 7
: 8 printf("p_ch[1] = %c\n", p_ch[1]);
: 9 printf("p_ch[1] @ %p\n", &p_ch[1]);

k**********g
发帖数: 989
6

Wrong code, not sure why it pass compilation and/or doesn't crash. Doesn't
compile on my machine.
If you want them to point to strings, use
int main()
{
const char* p[3] = { "a", "b", "c" };
std::cout << p[0] << std::endl;
std::cout << p[1] << std::endl;
std::cout << p[2] << std::endl;
return 0;
}
Notice double quote, because each is a string literal.

【在 N******n 的大作中提到】
: 书上的例子:
: char *p[3]={'a','b','c'}
: 你如果看visual C++追踪,p[1] is a pointer, *p[1] value =a;
: 但是你打印这两个值,他们都得到a。
: 好像从来没有打印出地址的情况。

z*y
发帖数: 1311
7
你用两个字符的串就可以看出端倪了
p[0]指整个字串,*p[0]是这个字串的第一个字符
其它数组也是一样,见例程
#include
main()
{
char *p[3]={"ab", "c", "d"};
printf("%s\n", p[0]);
printf("%c\n", *p[0]);
int a[] = {0, 1, 2};
printf("%d\n", *a);
}
N******n
发帖数: 3003
8

明白了,谢谢

【在 z*y 的大作中提到】
: 你用两个字符的串就可以看出端倪了
: p[0]指整个字串,*p[0]是这个字串的第一个字符
: 其它数组也是一样,见例程
: #include
: main()
: {
: char *p[3]={"ab", "c", "d"};
: printf("%s\n", p[0]);
: printf("%c\n", *p[0]);
: int a[] = {0, 1, 2};

1 (共1页)
进入Programming版参与讨论
相关主题
这段code有啥问题?菜鸟求教,一个c++的困惑
JHQ的一道指针题。array和pointer在作为函数返回时有啥区别 (C)
数组问题a C++ interview question..........
怎么得到char *分配空间的大小?C++菜问: 怎么这样也可以?
C++ formatted output question大家来做题C++。
问个char*的问题小白请教一个C++问题:问什么我不能把两个指针=起来?
一个指向指针的指针的引用?谁来解释一下这个是compiler问题吗?
c++ question问个char * 的问题
相关话题的讨论汇总
话题: str话题: printf话题: ch话题: std话题: char