首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

C语言函数传值的相关问题

(本文年代久远,请谨慎阅读)现有如下程序段: void getmem(char **p,int n){ *p=(char *)malloc(n); } int main(void) { // your...0; } 执行无误,输出hello,没有问题; 修改之后如下: void getmem(char *p,int n){ //一开始认为是多余的 p=(char *)malloc(n); } int...printf("%s",str);free(str); return 0; } 代码分析 上述输出为null,其实不小心犯了个低级错误,那就是: 调用getmem时是值传递,str本身在getmem之后并没有获得相应空间...,原因即getmem中的*p 作为局部变量并不能将p返回到main函数,即它只让局部的p指向了一段空间,没有意义。...而如果形参改为开始的 1 getmem(char **p,int n) 调用时使用 1 getmem(&str,100); 其意思是:char *p即指向指针的指针,意为“p指向一个变量,此变量存放的不是具体数据

1.3K20

x & (x - 1)==0

判断一个整数x是否是2的N次方。   方法之一是判断x & (x - 1)==0。若为True,则x是2的N次方;若为False,则x不是2的N次方。   ...显然X>0(当X≤0,没有讨论的意义)   给定正整数XX是2的N次方的充要条件是X转化成二进制后,有且只能有一个1,其余的都是0   也就是说,若X是2的N次方,则x1=1,x2=……=xn...    再证明“不是2的N次方不符合X & (X - 1)==0条件”   分两种情况,   1、X是奇数,则X=x1x2……xn-1xn,x1=xn=1,故X=1x1x2……xn-11...    则X-1=1x2……xn-10     则X & X-1是      1x2x3……xn-112  =X10         &  1x2x3……xn-102  =X-110...2、X是偶数,则X=x1x2……xn-1xn,x1=1,xn=0     由于X不是2的N次方,因此x1,x2……xn-1中至少有两个为1。

74520
领券