指针是怎么知道所指向的变量占几个字节的?
注意不是指针变量比如说inti=1;int*p=i;int*是如何实现p能精准的指向i,并且不会超出变量本来的范围顺便能帮我解释一下malloc()函数的强制类型转换到底...
注意不是指针变量
比如说
int i = 1;
int * p = i;
int*是如何实现p能精准的指向i,并且不会超出变量本来的范围
顺便能帮我解释一下malloc()函数的强制类型转换到底是怎么回事
int *p = (int*)malloc(4);
这里int * 到底是为了使malloc()返回的变量与前面一致
还是为了知道malloc函数分配的内存中的单个变量所占内存 展开
比如说
int i = 1;
int * p = i;
int*是如何实现p能精准的指向i,并且不会超出变量本来的范围
顺便能帮我解释一下malloc()函数的强制类型转换到底是怎么回事
int *p = (int*)malloc(4);
这里int * 到底是为了使malloc()返回的变量与前面一致
还是为了知道malloc函数分配的内存中的单个变量所占内存 展开
2个回答
2020-08-10
展开全部
int*p=i;这句是错的
应该写为int *p=&i;提取i的地址放在p里,在取p指向的值时按int的大小来取,你如果访问p+1这个地址也不会报错,但是得到个什么值就不好说了。
void* malloc(a);这个函数给定一个参数a用于表示获取多少字节的地址空间,返回一个空类型的指针,这个地址有a个字节的可用空间,因为指针类型是空类型也就是void*,没法赋值给其他类型的指针变量,所以进行强转。在c里,只要有可用地址。就可以进行任意类型访问,例如有20个字节的可用地址空间,就可以用int类型的指针来存储5个变量,用char类型的指针可以存储20个变量,存了20个char类型的变量之后也可以强转一下指针来读成5个int类型变量。
指针的类型表示的就是所指向的变量占空间的大小
应该写为int *p=&i;提取i的地址放在p里,在取p指向的值时按int的大小来取,你如果访问p+1这个地址也不会报错,但是得到个什么值就不好说了。
void* malloc(a);这个函数给定一个参数a用于表示获取多少字节的地址空间,返回一个空类型的指针,这个地址有a个字节的可用空间,因为指针类型是空类型也就是void*,没法赋值给其他类型的指针变量,所以进行强转。在c里,只要有可用地址。就可以进行任意类型访问,例如有20个字节的可用地址空间,就可以用int类型的指针来存储5个变量,用char类型的指针可以存储20个变量,存了20个char类型的变量之后也可以强转一下指针来读成5个int类型变量。
指针的类型表示的就是所指向的变量占空间的大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询