读书人

c语言指针解决方法

发布时间: 2012-03-28 15:40:03 作者: rapoo

c语言指针
#include<iostream>
using namespace std;
void Foo ( char str[100]){

cout<<sizeof( str )<<endl;
}
main()
{
char *p="qwert";
char *q="ffgh";

*(p+2)=0;
cout<<p<<endl;

}为什么不对而
main()
{
char b[] = “hello, you”;
b[5] = 0;
cout<<b<<endl;} 对

如 char *p="qwert";
char *q="ffgh";
whlie(*p++=*q++);是否可以



[解决办法]
*(p+2)=0;
你的p还没分配内存 就试图访问未知内存
char *p="qwert"; 只是分配了一个字节的内存,就是首地址
[解决办法]
main()
{
char *p="qwert";
char *q="ffgh";

*(p+2)=0;
cout<<p<<endl;

}为什么不对
p指向的是常量字符串“qwert",不能更改常量字符串的内容

main()
{
char b[] = “hello, you”;
b[5] = 0;
cout<<b<<endl;}

b指向的是指针数组,这个指针数组存储的是“hello, you”;可以修改其中的内容
[解决办法]
[code=C/C++][#include<iostream>
using namespace std;
void Foo ( char str[100]){

cout<<sizeof( str )<<endl;
}
main()
{
char *p="qwert";
char *q="ffgh";

*(p+2)=0;
cout<<p<<endl;

}
]
[解决办法]
内存分四个区(严格来说是五个区)

运行时栈: 局部变量
数据区: 全局变量,和常量,静态变量,
静态数据区:字符串常量 (在这个区中的数据中只读的) 例好char *a = "zhao";
char str[] = "zhao";
这是一种字符数组初始化的方法,
str[]是在栈上创建的,所以内容可以改变

堆: 程序员手工分配的空间malloc()
代码区:程序代码

读书人网 >C语言

热点推荐