C++整型指针赋值的问题

我申明一个整型的指针并对其数组用变量i进行赋值,我每次执行到循环内的时候就出现segmentationfault错误,请问写错在哪里?inti,*p;for(i=0;i<... 我申明一个整型的指针并对其数组用变量 i 进行赋值,我每次执行到循环内的时候就出现segmentation fault错误,请问写错在哪里?
int i,*p;
for(i=0;i<256;i++){
*(p+i)=i;
}
程序代码应该是这样的。
int i,*p;
p=(int *)malloc(sizeof(int));
for(i=0;i<256;i++){
*(p+i)=i;
}
展开
 我来答
百度网友6fe74e2
推荐于2016-09-25 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:268万
展开全部
p这个指针变量没有分配存储空间就开始向他指向的地址存值了,当然是错的
int *p=(int *)malloc(256*sizeof(int));//让他指向一块动态分配的内存块就行了
或者
int a[256]={0};
int i,*p;
p=a;
for(i=0;i<256;i++)
{
*(p+i)=i;
}
这样也行,让p指向确定的数组a

你动态分配的内存只能存一个int,
p=(int *)malloc(sizeof(int));
改成
p=(int *)malloc(sizeof(int)*256);
后汀兰洪辰
2019-03-16 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:2298万
展开全部
p这个指针变量没有分配存储空间就开始向他指向的地址存值了,当然是错的
int
*p=(int
*)malloc(256*sizeof(int));//让他指向一块动态分配的内存块就行了
或者
int
a[256]={0};
int
i,*p;
p=a;
for(i=0;i<256;i++)
{
*(p+i)=i;
}
这样也行,让p指向确定的数组a
你动态分配的内存只能存一个int,
p=(int
*)malloc(sizeof(int));
改成
p=(int
*)malloc(sizeof(int)*256);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱上时尚的你33
2019-05-24 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:35%
帮助的人:804万
展开全部
char*p="abc";
是在内存开辟4个字节的存储空间,依次存放'a'
'b'
'c'
'\0'
4个字符
并把存'a'的那个字节的地址
赋值给指针p
char*p
;
是说
定义一个指向字符型数据的指针p
指针p在内存中以
unsigned
int数据类型存放
而非以char类型存放
*p=*(p+0)=p[0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丁文博0721
推荐于2018-03-13 · TA获得超过263个赞
知道答主
回答量:159
采纳率:0%
帮助的人:170万
展开全部
你好,你应该通过malloc申请空间,或者是用数组
现在你这样p+i指向的是一个未知空间,可能是系统需要用到的,不允许你更改内容,即使允许你这样也是不对的,因为这个空间属于这个程序,用它就是错误的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ifeiying
2013-04-15 · TA获得超过230个赞
知道小有建树答主
回答量:253
采纳率:100%
帮助的人:148万
展开全部
你只申请了一个int的空间,却操作了256个int,当然不对了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式