首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言指针解决方法

2012-03-28 
c语言指针#includeiostreamusing namespace stdvoid Foo ( char str[100]){coutsizeof( str )endl

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()
代码区:程序代码

热点排行