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

2024-12-21 20:25:23
推荐回答(5个)
回答1:

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);

回答2:

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);

回答3:

char*p="abc";
是在内存开辟4个字节的存储空间,依次存放'a'
'b'
'c'
'\0'
4个字符
并把存'a'的那个字节的地址
赋值给指针p
char*p
;
是说
定义一个指向字符型数据的指针p
指针p在内存中以
unsigned
int数据类型存放
而非以char类型存放
*p=*(p+0)=p[0]

回答4:

你好,你应该通过malloc申请空间,或者是用数组
现在你这样p+i指向的是一个未知空间,可能是系统需要用到的,不允许你更改内容,即使允许你这样也是不对的,因为这个空间属于这个程序,用它就是错误的。

回答5:

你只申请了一个int的空间,却操作了256个int,当然不对了