Summer 5

如下程序运行结果是

1.

int Change(int *pX)
{
	int y = 8;
	y = y - *pX;
	pX = &y;
	return 0;
}

int main()
{
	int xx = 3;
	int *pY = &xx;
	Change(pY);// 值传递,不能改变指针
	printf("%d\n", *pY);//  3
	system("pause");
	return 0;
}

函数调用时,涉及到值传递。实参经过子函数,计算出结果,并返回函数值给主函数。
函数传值:值传递和引用传递。
本质区别:值传递是将实参的副本传给函数,进行计算。
引用传递是将实参的地址传给函数进行计算。
直接区别:值传递不改变实参的值,而引用传递改变实参的值。
例如:
void swap(int a,int b); 值传递 主函数传进来的a,b即使经过操作,仍不改变a和b的值。
void swap(int &a,int &b);引用传值,主函数传来的a,b的地址,通过运算改变了啊a,b地址里面的内容,也就是可以改变a,b的值。

2.

char arr[2][4];
	strcpy((char *)arr, "you");
	strcpy(arr[1], "me");
	arr[0][3] = '&';
	printf("%s\n", arr);// you&me

1、strcpy是将后一个字符串(包括字符串结尾符号'\0')复制到前一个参数指向的位置
2、结果为you&me,因为arr[0][3]='&'将原来的arr[0][3]处的'\0'替换掉了,导致一直识别到下一个'\0'才结束。
3、arr[2][4]与arr[8]的内存布局是相同的。只是访问方式可以不同而已。

char arr[2][4]; 相当于: arr[][]={{'\0','\0','\0','\0'},{'\0','\0','\0','\0'}}; strcpy(arr,"you"); 之后 arr[][]={{'y','o','u','\0'},{'\0','\0','\0','\0'}}; strcpy(arr[1],"me"); 之后 arr[][]={{'y','o','u','\0'},{'m','e','\0','\0'}}; arr[0][3]='&'; 之后 arr[][]={{'y','o','u','&'},{'m','e','\0','\0'}}; 执行 printf("%s\n",arr);时, 把 arr 当做一维数组,即:arr[]={'y','o','u','&','m','e','\0','\0'}; 所以输出结果是:you&me

3. -27 在内存中的存储形式是

int main()
{
	printf("%x\n", -27);// ffffffe5
	system("pause");
	return 0;
}

负数按补码
补码 = (不考虑符号位)反码 + 1

8 位情况:
1001 1011 原码
x110  0100 反码
反码 + 1 -> 1110 0101 补码

4.

int fun(int x)
{
	int count = 0;
	while (x)
	{
		count++;
		x = x&(x - 1);
	}
	return count;
}

int main()
{
	printf("fun(2017)=%d\n", fun(2019));//fun(2017)=8
	system("pause");
	return 0;
}

5.

void main()
{
	int a = 1;
	int b = 2;
	int t;
	t = CIR(a + b); //a+b*a+b
	printf("%d\n", t);//5
	system("pause");
	return ;
}

6.

unsigned long g_ulGlobal = 0;

void GlobalInit(unsigned long ulArg)
{
	ulArg = 0x01;
	return;
}

void main()
{
	GlobalInit(g_ulGlobal);//形参只是实参的副本
	printf("%lu",g_ulGlobal);//0
	system("pause");
	return;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值