摄影创意网站成都小程序商城开发
欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导
转载请注明来源:
-  
下边代码,x值是?
 
int x=10;x+ = 3+x%(3);
解析:
-  
初始值:
x = 10 -  
计算
x % 3:-  
10 % 3的结果是1,因为 10 除以 3 的余数是 1。 
 -  
 -  
计算
3 + x % 3:-  
3 + 1的结果是4。 
 -  
 -  
计算
x += 3 + x % 3:-  
相当于
x = x + 4。 -  
当前的
x是10,所以x = 10 + 4。 
 -  
 -  
最后,
x的结果是14。 
因此,执行完 x+=3+x%(3); 后,x 的值是 14。
2.下边代码输出结果是?
int **pp, *p, a=10, b=20;pp = &p;p = &a;p = &b;printf("%d,%d", *p, **pp)
解析:
-  
int **pp, *p, a=10, b=20;-  
pp是一个指向指针的指针(即二级指针)。 -  
p是一个指向整型的指针(即一级指针)。 -  
a和b是整型变量,分别初始化为 10 和 20。 
 -  
 -  
pp = &p;-  
这行代码将
p的地址赋值给pp。现在pp指向p。 
 -  
 -  
p = &a;-  
这行代码将
a的地址赋值给p。现在p指向a,因此*p的值是 10。 
 -  
 -  
p = &b;-  
紧接着,这行代码将
b的地址赋值给p。现在p指向b,因此*p的值变为 20。 -  
注意,此时
pp仍然指向p,但p的值已经改变,指向了b而不是a。 
 -  
 -  
printf("%d,%d", *p, **pp);-  
*p:由于p指向b,所以*p的值是b的值,即 20。 -  
**pp:pp指向p,而p指向b,所以**pp相当于*p,其值也是b的值,即 20。 
 -  
 
因此,printf("%d,%d", *p, **pp); 的输出结果是 20,20。
3.定义语句int *ptr [4];,下面等价的定义语句是?
A int ** ptr;
B int( * ptr) [4];
C int ptr[4];
D int * (ptr [4]);
解析:
在C语言中,int *ptr[4]; 定义了一个包含4个整型指针的数组。每个数组元素都是一个指向整型的指针。
A. int **ptr;
-  
这定义了一个指向指针的指针,而不是一个指针数组。因此,这与原定义不等价。
 
B. int (*ptr)[4];
-  
这定义了一个指向包含4个整数的数组的指针。虽然这里有括号和
[4],但它并不表示一个指针数组,而是表示一个指向数组的指针。因此,这也与原定义不等价。 
C. int ptr[4];
-  
这定义了一个包含4个整数的数组,而不是指针数组。因此,这与原定义不等价。
 
D. int *(ptr[4]);
-  
这实际上与
int *ptr[4];是等价的。它定义了一个名为ptr的数组,该数组包含4个元素,每个元素都是指向整型的指针。这里的括号是可选的,因为[]的优先级高于*,所以int *ptr[4];和int *(ptr[4]);表示的是同一种类型。 
因此,与原定义int *ptr[4];等价的定义语句是D选项:int *(ptr[4]);。
4.下边的代码,输出是多少?
#include <stdio.h>void foo(int b[][3]){++b;b[1][1] = 9;}int main(){int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};foo(a);printf("%d", a[2][1]);}
解析:
在这个C语言程序中,有一个二维数组a和一个函数foo,该函数接收一个二维数组作为参数。
-  
二维数组
a被初始化为:1 2 3 4 5 6 7 8 9制代码
 -  
在
main函数中,数组a被传递给函数foo。在C语言中,当二维数组作为参数传递给函数时,它实际上是通过指向其第一个元素(即第一个子数组)的指针来传递的。因此,foo函数中的参数b是一个指向包含3个整数的数组的指针。 -  
在
foo函数中,执行了++b;操作。这个操作使b指针指向了a的第二个子数组(即{4, 5, 6})。此时,b[0]指向{4, 5, 6},b[1]指向{7, 8, 9}。 -  
接下来,执行
b[1][1] = 9;。由于b现在指向a的第二个子数组,所以b[1][1]实际上是指a[2][1](即原数组中的8所在的位置)。这行代码将a[2][1]的值更改为9。 -  
回到
main函数,执行printf("%d", a[2][1]);。由于a[2][1]的值在foo函数中被更改为9,所以输出将是9。 
因此,程序的输出是9。
未完待续,持续更新!
以防后边找不到可以点赞收藏下!
欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导
