1,如果将第4行改为printf("%s",*pt),结果居然是内存不能为read
(我认为把 printf("%s",*pt);%s改成%c就可以,)
2,char *data[10]={"one","two","three","four"};
char data[10][10]={"one","two","three","four"};
请问这两行有什么区别?
(我人为只是第二种规定了引号里面的字符不能超过10,别的没多少区别)
3,di 3 ge wen ti wo zhichi "boot2046" de jianjie.
a[]="china"
*p="china"
第一种是在栈上分配的,所以对他进行修改是没有问题的
第二种是在只读存储区分配的,去修改一块只读的内存就会引起段错误
----------------解决方案--------------------------------------------------------
不好意思我改错了,我在我的机子上运行 printf("%s",*pt);可以出结果,为china
我的编译器是Dev c++4.
----------------解决方案--------------------------------------------------------
char *data[10]是一个指针数组,他有10个元素,每个元素是一个指针
char data[10][10]是一个二维数组,10行10列
这两种不同的定义在程序中也是有区别的:
char *data[10]={"one","two","three","four"};
char data[10][10]={"one","two","three","four"};
看两个简单的例子
#include <stdio.h>
void main()
{
char data[][10] = {"one","two","three","four"};
data[0][1] = 'S';
printf("%s",data[0]);
}
#include <stdio.h>
void main()
{
char *data[10] = {"one","two","three","four"};
data[0][1] = 'S';
printf("%s",data[0]);
}
第一个程序能够正确运行,第二个却会报错
原因嘛就和我在第三个问题中提到的是一样的
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
char *data[10] = {"one","two","three","four"};
data[0][1] = 'S';
printf("%s",data[0]);
}
data[0][1] = 'S';
如果是data[0][0]呢?
----------------解决方案--------------------------------------------------------
呵呵
如果是data[0][0]呢?
一样的效果
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
char *data[10] = {"one","two","three","four"};
data[0][1] = 'S';
printf("%s",data[0]);
}
我运行了上面的程序,可以通过编译,只是不输出任何东西来。我用的是Dev c++4.0,不晓得是什么原因。
还有我发表下我自己的意见。
data[0][1] = 'S';我总觉得这个有问题,应该用*data+1='s'才是OK 的吧
忘高手指导
----------------解决方案--------------------------------------------------------
data[0][1] = 'S';
我这个操作只是修改一下第一个字符串one中的第二个字符,把n改为S,其实改什么无所谓,只是举个例子,说明这样修改只读存储区会出错
编译是肯定能编译通过的
运行肯定是不正常的
因为我是在Linux系统下,所以他会给出一个段错误,在windows下是什么我就不清楚了
----------------解决方案--------------------------------------------------------
"*"是地址,当然不能输出拉
----------------解决方案--------------------------------------------------------
注意行指针不时指针的指针
----------------解决方案--------------------------------------------------------