C 语言是个小问题,前辈给了我很多建议

发布于 美食 2024-08-21
12个回答
  1. 匿名用户2024-02-01

    我头晕。 A 和 B 只是两个指针。 如果不初始化它们,则它们不会指向任何内存空间。

    这种指针称为字段指针)。将它们分配给 value 已经是非法的。 即 *a=10, *b=20; 这句话是不合法的。

    从头到尾,没有为a、b...分配内存。希望对你有所帮助。

  2. 匿名用户2024-01-31

    指针交换函数参数是指针的指针。

    整数交换也是如此。

    只需要修改以下内容:

    main()

    int a,b;

    a=10,b=20;

  3. 匿名用户2024-01-30

    就我个人而言,我认为 *a=10, *b=20; 这句话有问题,不能用指针直接指向一个值,你可以从m=10,n=20开始; *a=m,*b=n; 个人理解。 请批评和纠正。

    如上所述,p 和 q 仍然是字段指针,除非在开头给出 p 和 q,否则不会分配特定的空间为了使它成为 *p、*q=10 和 20,对吧? 指针不需要初始化,但在使用之前是否必须分配内存?

    否则,它是一个字段指针,可能指向系统内存? 随意换手指不是很危险吗? 个人理解,请指教楼下,谢谢。

    也请专家提供更多建议。

  4. 匿名用户2024-01-29

    如果没有 *p=*q,两个指针指向同一个地址,并且 *q=t 是用 *q=t 完成的,*q 和 *p 将同时更改,*a=*b=10

    楼上同学的指针不用初始化分配,*p=10正确,间接访问操作可以读写。

  5. 匿名用户2024-01-28

    这三个问题的统一答案。

    通过输入自己运行它。

    基础知识不再是基础。

    第一个问题检查逻辑运算符的优先级。

    第二个问题检查输入格式。

    第三个问题考察编程思维。

  6. 匿名用户2024-01-27

    对于 num[.]'e'-'a']+

    e'-'a'实际上,它是与字母 E 相对应的 ACS

    代码减去与字母 A 对应的 ACS

    代码,即'e'-'a'相当于101-97=4;

    所以 num[.]'e'-'a'] 和其他引线弯曲了 num[4] 和 num['e'-'a']+

    相当于 num[4]++

    因为 num[4] 是一个变量,所以 num[4]++ 是一个类似于 a++ 中的淮清的自强加表达式,即 num['e'-'a']+

    是一种自我强加的表达方式。

  7. 匿名用户2024-01-26

    1 .首先,我们定义一个指针数组,pt[3] 类似于数组,数组名称代表第一个字符,指针名称代表第一个指针,所以 pt 应该是 pt[0],pt[0] 对应 t[0]。

    在 *(pt+l)+2) 中,我们看一下 pt+l 对于数组,每行的内存是连续分配的,所以 pt+l 是当前 pt 行的下一行,即 t[1]。

    *(pt+l)+2 是指向 Pt+1 的行中的第三个字符,即 t[1][2],因此 *(*pt+l)+2) 是指向 t[1][2] 的行中的第三个字符。

    ps:for 循环中执行的含义是:pt[0] a,b,c

    pt[1]→ e,f,g

    pt[2]→ h ,i, j

    pt 对应于 pt[0],所以 pt+1 = pt[1]。

    2.在定义 sum 时,由于 sum 没有初始化,编译器会随机分配 sum,所以 sum 会被赋值给一个随机数,和 之后的 sum 当然是不确定的。

    第一次调用 fun 函数时,在输入参数 (a+fun(d)) 时,fun(a+fun(d)) 应该会遇到 fun(d)。

    在这种情况下,由于静态 int d=5 尚未执行,因此传入的参数 p(即 d)仍为 1,然后执行 d+=p;

    在这种情况下,输出 d 等于 6

    之后,我们运行 fun(a+fun(d)) 进入外部 fun 函数,然后参数 p 等于 a+fun(d),即 9

    此时,d 等于 6,所以 d+=p 等于 15,所以 15 是输出

    然后返回值是 d,所以它也是 15

    所以最终结果是 6 15 15

    ps.需要注意的是,静态 int d=5 其中 d 被声明为静态变量,也就是说,在编译时,变量 d 已经分配了内存,那么当 fun() 函数被重复执行时,这个 d 变量就不会被重复定义,也就是当 fun 函数第二次执行时, 不需要执行静态 int d =5。

  8. 匿名用户2024-01-25

    在第一个问题中,t 是一个数组,pt 是一个指针数组,循环后,指针数组指向数组 t。 也就是说,pt 和 t 应该是相同的内容,但 t 是 const。 *(pt+1) 是 t[1],*pt+l)+2) 是 t[1][2]。

    对于第二个问题,sum 未初始化,因此答案为 C。 请记住,永远不要使用未初始化的变量!

    第三个问题,选择c,key是静态int d,地址分配好后,里面的内容要等到程序执行结束才会发布,这就是变量生存期的问题。

    最后,最好自己把这些问题输入到编译器中,然后用调试功能观察每个变量的变化,这样会更容易理解。

  9. 匿名用户2024-01-24

    哦,我很高兴,我刚刚学完C语言。 我来看看 Ah A: int t[3][3], pt[3], k;

    for (k=0;k<3;k++)pt[k]=&t[k][0];

    我们来分析一下执行过程:

    for (k=0;k<3;k++)pt[k]=&t[k][0];

    第一个循环:pt[0] = &t[0][0] 将第一个地址分配给 pt; ,pt+l)+2) 等价于:t[l][2] “因为 *(pt+l) 等价于 t[l],所以它是 t[l]+2,加上 * 是 t[l][2]。

    第二个循环的结果相同,,*pt+l)+2) 结果是 t[l][2])

    二:main()。

    sum 的值没有初始化,所以它的值是不可预测的,用 sum 运算后的值也必须是不可预测的

    同学们,还有什么不明白的吗?

  10. 匿名用户2024-01-23

    *(pt+1)== t[1][0]; pt+1)+2) = t[1][2]

    11.事实上,一般的编译器答案将是 a,但 int sum; 没有初始值,默认值是否为 0 取决于编译器,因此不确定。

  11. 匿名用户2024-01-22

    17 c * (pt+1) 指向 t 加 2。

    11 C 问题是不确定的,因为初始值是随机且不确定的。

  12. 匿名用户2024-01-21

    11.之所以选择 C,是因为没有初始化,因此 sum 的值是不确定的。 19.选择 C

相关回答
7个回答2024-08-21

解决方案 1:%g 输出小数点后一位整数的最后一位数字,包括整数,最后一位数字四舍五入。 >>>More

4个回答2024-08-21

完整步骤如下(1342可以正确输出)。

#include >>>More

15个回答2024-08-21

问题 1:main()。

int a,b,c,t; >>>More

8个回答2024-08-21

错误的问题:printf("%d,",f(++n);缺少一个括号。 >>>More