第1个回答 2013-12-18
这里分配的内存是给指针p,还是p所指向的变量?
答:这里分配的是p所指向的内存空间,即你所说的“变量”。
关於返回值,这个函数将返回一个void型的指针变量,这是什麽意思?
答:返回void类型的指针,就是为了方便调用它的人能方便把改指针转化为自己所需要的指针,因为你永远不知道调用者希望什么样的操作。比如
INT8S a[2];
INT16S b;
VOID *p;
p = &b;
a = (INT8S *)p; //在此处,void *p只是起到一个临时储蓄罐的作用而已。
返回的这个指针是指p,还是其他的指针?
答:返回的是一个地址,然后把地址放到p所指向的地址处。p是一个变量。
返回的指针,其存储空间(地址)又在哪里?是本身的这块内存,还是其他地址的内存空间?
这里的强制转换(char*)是什麽意思?
答:上面已经有所涉及,不重复说了。返回的是一个地址,对应用开发而已,其地址是由操作系统提供的,如果你会调试操作系统,就会知道地址在哪里,通常这是没必要的,因为不同操作系统分配的地址可能不一样,不同时刻不同调用,地址又可能不一样……如果你真的想自己控制该地址的话,可以学习黑客技术,要么“欢迎加入嵌入式开发”……
第2个回答 2013-12-18
1,这里分配的内存是给指针p,还是p所指向的变量?
指针就是一个变量,一个用来存储地址的变量。指针自身的大小是固定的(在同一环境中),比如你可以这样验证:char *p;prntf("%d \n", sizeof(p));这里malloc分配的是100个字节的大小,是p指向的一块内存。
2,关於返回值,这个函数将返回一个void型的指针变量,这是什麽意思?返回的这个指针是指p,还是其他的指针?
void可以简单理解为通用的指针类型,可以转化为任何其他指针类型,返回的这个指针是指p,还是其他的指针?返回的是一块内存地址,赋值给p。
3,返回的指针,其存储空间(地址)又在哪里?是本身的这块内存,还是其他地址的内存空间?
这里的强制转换(char*)是什麽意思?
指针本身是变量,所以指针本身也是占内存空间的,你要看p本身的地址,可以char *p; printf("%p \n", p);验证。这里的强制转换(char*)是什麽意思?在标准C里是不需要强转的,C++需要,为保证程序可移植性,还是转换下。
第3个回答 2013-12-18
在内存中开辟了 一片空间 100个字节,然后 p里边存的是 这100个字节的首地址
至于为什么 (char *)为了跟 p的类型符合啊
malloc是 开辟一片空间 返回首地址的一个函数
第4个回答 2013-12-18
分配大小为100的内存,内存首地址给p