老潭书里的二维数组

c4313848 2003-10-09 10:04:58
#include "iostream.h"
#include "stdio.h"

void main()
{
static char *name[] = {"follow me","basic","Great Wall","fortran","computer design"};
char **p;

p = name+2;
printf("%o\n",*p);
printf("%s\n",*p);
}

为什么输出时换个格式,结果就不一样。*P是什么意思。
...全文
55 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
c4313848 2003-10-17
  • 打赏
  • 举报
回复
cxjddd(空浮无根)老兄你是不是经常改名字。
cxjddd 2003-10-16
  • 打赏
  • 举报
回复
以前怎么就没打过鸟呢??
c2413 2003-10-14
  • 打赏
  • 举报
回复
那个老兄帮忙贴上去。
c4313848 2003-10-14
  • 打赏
  • 举报
回复
谁这次考中级程序员,能不能把下午题目的答案贴上。
allenc4213 2003-10-13
  • 打赏
  • 举报
回复
因为前两天去考试(中程),也不知道怎么样,水准太底了,
c4313848 2003-10-10
  • 打赏
  • 举报
回复
&str是str的地址,str地址到底是什么东东
Jinhao 2003-10-10
  • 打赏
  • 举报
回复
嘿嘿,*P是name+2的地址,在输出字符串时都是用的指针,不管是C还是C++都是这样
char a[100]="china";
a也就是个指针,等同于char*
输出时
cout<<a;
输出地址也可以这样
cout<<(long)a;
leyt 2003-10-10
  • 打赏
  • 举报
回复
str的地址就是str在内存中的位置
sjtucs 2003-10-10
  • 打赏
  • 举报
回复
*name[]用的是指针数组,数组元素是地址。p=name+2即该指针数组中name[2]的地址给p,而*p为name2的值,又是个地址,用%o八进位输出该地址。printf+%s输出字符串,后面跟数组名,*p是地址,值就是“great wall” 的首地址,故输出该字符串
chinajiji 2003-10-10
  • 打赏
  • 举报
回复
char* str = "string";
str 首先是个“指针变量”,知道不??
我不知道.
变量取地址用什么? &str ,知道不??
我也不知道.
&str 就是“变量”str 的地址!!!!
我还是不知道.
str 的值是什么??就是 "string" 的地址。
我更不明白了.
"string" 的地址是什么??就是 "string" 在内存中的位置。
我更糊涂了.
cxjddd 2003-10-10
  • 打赏
  • 举报
回复
char* str = "string";
str 首先是个“指针变量”,知道不??
变量取地址用什么? &str ,知道不??
&str 就是“变量”str 的地址!!!!

str 的值是什么??就是 "string" 的地址。
"string" 的地址是什么??就是 "string" 在内存中的位置。
bg54 2003-10-10
  • 打赏
  • 举报
回复
*是取地址中的值,和数组有连系,
int a[10],*p;
p=a;
p是a[0]的地址。
*p是a[0]的值,
wing0 2003-10-10
  • 打赏
  • 举报
回复
加上"*"表示取值,“&”表示取地址,
你的理解基本上正确,举例说明
int i
int*i_pointer
i_pointer = &i//指针起始值
*i_pointer= 2//这条语句等同于i=2
firedevil 2003-10-10
  • 打赏
  • 举报
回复
%s是字符串格式符,
而%o好象是八进制输出格式符
c4313848 2003-10-10
  • 打赏
  • 举报
回复
我又问了一个问题,就在上面,请大家帮忙.
andyforever 2003-10-10
  • 打赏
  • 举报
回复
*是取地址,上面的操作符不同所以输出的内容当然不同了,就好像是对同一个地址的内容作不同的理解
c4313848 2003-10-10
  • 打赏
  • 举报
回复
我又从头看老潭的指针那章,
他第一节里讲:指针变量的值(即指针变量中存放的值)是指针(地址)。
他在书里举了个例子:
i_pointer = &i; (i的开始地址为2000)
他还说 i_pointer 中的的值为2000,是i的地址,我想知道怎样可以通过 i_pointer 来得到
i 的地址(也就是i_pointer中的内容应该是2000)。

“*”号表示“指向”*i_pointer 是i_pointer所指向的变量也就是 i 的值,
这个可不可以这样理解:*i_pointer 是指向存放在 i_pointer 中地址上的内容
cxjddd 2003-10-09
  • 打赏
  • 举报
回复
*p 能取得字符串的地址,当然就能得到字符串了。

char* str = "string"; // str 的值是 "string" 的地址
char** pstr = &str; // pstr 得到 str 的地址
printf ("%s", *pstr); // 这样也能打印 "string"

*pstr 得到的也不是 str 的地址:)
而是 "string" 的地址。

把“指针”和“地址”搞错了。
lemon520 2003-10-09
  • 打赏
  • 举报
回复
指针对初学者来说是一个难点!
这是很正常的事情,看书看多了就会慢慢明了了!
不要着急。
冰冻三尺,非一日之寒嘛!
c4313848 2003-10-09
  • 打赏
  • 举报
回复
我知道printf("%s\n",*p); 是输出字符串,遇到'\0'结束,
但是,*P不是name+2的地址,它怎么能输出字符串,难道
象printf("%s\n",*p)这种输出,可以输出name+2里的内容,
还是我的理解根本就是错的????
加载更多回复(6)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧