奇怪的指针问题,欢迎进来讨论
我碰到如下一些疑惑,先谢谢各位的发言!/*****************第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编辑过]