c语言指针传递
⑴ c语言指针传递问题
变量FunP是什么类型的呢?MyFun()函数的函数原型是怎样的呢?FunP是函数指针变量吧。
你问题都没描述清楚,怎么帮你解释啊?用程序来验证说明,如下:
#include<stdio.h>
voidMyFun()
{
printf("Thisismyfunction! ");
}
intmain()
{
void(*FunP)();//声明函数指针变量
FunP=MyFun;
printf("MyFun=0x%p ",MyFun);//%p是打印出地址值,16进制输出,下同
printf("FunP=0x%p ",FunP);
FunP=&MyFun;
printf("&MyFun=0x%p ",&MyFun);
printf("FunP=0x%p ",FunP);
return0;
}
//运行结果如下:
MyFun=0x00401350
FunP=0x00401350
&MyFun=0x00401350
FunP=0x00401350
//从运行结果来看,MyFun和&MyFun的值是一样的,所以两个赋值都是将MyFun函数的地址赋给FunP变量。
⑵ C语言指针传递问题。
HuffmanTreeHT;
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));
改为
HuffmanTree*HT=(HuffmanTree*)malloc((m+1)*sizeof(HTNode));
⑶ c语言 指针的传递
如果你输出printf("%d %d", *x, *y); 结果就是6,3了
由于a和b没变,所以printf("%d %d", a, b);还是3,6
⑷ 请问在C语言中,函数传参时怎样利用指针传递数组
数组名就是指针,例如:
#include <stdio.h>
voidpr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
(4)c语言指针传递扩展阅读:
注意事项
非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
与
int main(int argc,char** argv)
{
/* code here */
}
两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。
⑸ c语言关于指针传递的问题
void getmemory(char **p)
{
*p=(char *) malloc(100); //str = p ,给p赋予分配地址和空间,不就是相当于给str
strcpy(*p,“hello world”); //赋予分配地址和空间,为什么会有问题呢??
}
int main( )
{
char *str=NULL; //str就是指针,但是空指针
getmemory(&str);
printf(“%s/n”,str);
free(str);
return 0;
}
⑹ C语言指针地址传递
首先你要清楚一个点,这里的a,b都是变量名称,举个例子在地址0X0000FFFF处存了一个int型的变量为10,为了方便程序员使用,我们给他命名为a,那么我们在用a的时候其实就是在用那个地址为0X0000FFFF处的变量。
好了回到这里,*py和*px表示的是指针,py和px才是地址。假设a的地址是0X0000FFFF,该地址所存的内容为10,那么这里的px也是-X0000FFFF,而*px表示该地址所存的内容,也就是10.。那么可以很好理解这里其实不是交换地址,而是交换值。
⑺ C语言关于指针传递的问题
p-a表示p与a的距离即偏移。例如某一时刻p指向数组的第5个元素a[4]的位置,那么p-a就等于4。p-a<n保证p不会指向超出数组长度的位置导致越界。