| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1083 人关注过本帖
标题:奇怪的指针问题,欢迎进来讨论
取消只看楼主 加入收藏
spitcold
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-20
收藏
 问题点数:0 回复次数:0 
奇怪的指针问题,欢迎进来讨论
我碰到如下一些疑惑,先谢谢各位的发言!

/*****************第1个问题 :***************/

#include <stdio.h>
void main()
{
char str[3][10]={"china","canada","English"}; //第1行
char **pt;//第 2 行
pt=str;//第 3 行
printf("%s",pt);//第 4 行
}
运行结果:china

(1)如果将第2行改为 char *pt.运行结果居然不变?
疑问: 个人认为str[3][10]说明str是指针的指针啊?怎么可以用char *pt ?
(2)如果将第4行改为printf("%s",*pt),结果居然是内存不能为read

/*********************第2个问题:****************/

char *data[10]={"one","two","three","four"};
char data[10][10]={"one","two","three","four"};
请问这两行有什么区别?

/*********************第3个问题:****************/

#include <stdio.h>
#include <stdlib.h>

void main()
{
char *p,a[]="china";
p=a;
while(*p!=NULL) //一开始少了*号,引起不必要讨论,非常惭愧.
{
*p=*p+4;
p++;
}
printf("%s",a);
}

运行结果正常,但是如果将a[]="china"该为*p="china"就引起内存只读错误,即使用先用malloc开辟内存给p指针
(一开始我错误的把while(*p!=NULL)少了*号,引起朋友们在这一点上的讨论,非常抱歉,今后一定更加详细的检查以免浪费网友宝贵时间!


/********************** 部分结贴************************/
第三问:8楼正解!


[此贴子已经被作者于2007-7-24 19:15:42编辑过]

搜索更多相关主题的帖子: 指针 欢迎 
2007-07-23 21:07
快速回复:奇怪的指针问题,欢迎进来讨论
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041599 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved