C语言求解,指针赋值(错误记忆错误)。

发布于 科技 2024-06-08
18个回答
  1. 匿名用户2024-01-29

    ………童鞋:你搞砸了你的指针。

    首先,填充功能确实设置了您分配给它的所有空间'\0',但指针 p 不再指向您分配的空间,而是指向内存中“堆”的顶部; 然后,func 2 再次将其向上移动,按 num 位和字节移动它,此时它指向 **? 反正不是你想要的地方。 将它指向的内存设置为'\0',则 strlen 应该得到 0,后面跟着 blank 将没有任何输出。

    但是你得到的是 20,这表明分配不成功,应该有内存写入错误。

    你得到 20 = 1 = 1 = 乱码,乱码是这 20 个字节的结果。

    建议你不要再用cfree4了,5有,4一点都不好。

  2. 匿名用户2024-01-28

    我看不出有什么问题,最大值是多少?

  3. 匿名用户2024-01-27

    strcpy(orgarray ->visibleflag, null);

    从语法上讲,本身没有语法错误。

    但 100% 是有问题的。

    您正在尝试读出内存空地址的值。

    如果你想让 orgarray ->visibleflag 指向 null,这是不可能的,visibleflag 是一个数组,数组名称不是可修改的左值。

    如果是指针,则直接 ptr=null;

  4. 匿名用户2024-01-26

    实现你的想法并不难,只需指针,这是我写的一个测试用例:

    级别:无效的 func(*p)。

    main() 其他。

    返回 0}

  5. 匿名用户2024-01-25

    strcpy 的 2 个参数是指针类型,用于更改指针指向的空间内容。

    strcpy(orgarray ->visibleflag, null);此语句的第二个参数肯定是无效的,它等价于查找空指针指向的内存。

    strcpy(orgarray ->visibleflag, null);你想通过写这篇文章达到什么效果?

    如果你只想更改 orgarray ->visibleflag 的值,那就错了,因为 orgarray ->visibleflag 是常量。

    如果要清除字符串,orgarray ->visibleflag[0] = 0; (orgarray ->visibleflag[0] = '\0';只需将第一个字符标记为结束字符即可。

  6. 匿名用户2024-01-24

    只需分配一个值 0 并尝试一下。

  7. 匿名用户2024-01-23

    你没有指向地址的指针变量 l,它是一个狂野的指针,可能指向一些不可读或可存储的内存空间,并且你 l->length=100; 当然,改变存储在这个内存空间中的值,他错了。

    主要功能更改:

    int main()

    sqlist *l=&llist;设 l 指向 llist 所在的内存空间。

    l->length=100;}

  8. 匿名用户2024-01-22

    你只是声明,你没有去新的sqlist,你怎么能使用它?

    int i;

    sqlist *l;

    l = new sqlist;

    l->length=100;

  9. 匿名用户2024-01-21

    它一定是错的,l 是一个指针,你不让它指向某个地方并为它赋值,它怎么能工作? 它可以是这样的:

    sqlist *l = new sqlist();只需为 L 所指的地方分配一个空间即可。

  10. 匿名用户2024-01-20

    你这样写没有错误,我在 c-free 上试过,它打印出来为 100

  11. 匿名用户2024-01-19

    你的 p1 指针没有初始化,即你的 p1 指针没有指向某个字符数组,你给它所指向的内存单元分配了一个值,这肯定会在运行时导致你的上述错误,所以你应该做以下操作:

    char b[100];定义一个字符数组 bp1=b;

    在第二个 for 循环之前,您还需要使指针 p1 重新指向字符数组 b 的第一个元素的地址,即 p=b;

    if(p1+i != p1+m-1-i)这个判断条件也是错误的,p1是指针,指针是地址,而不是指针所指向的内存单元的值,你是在比较地址值是否相等,当然不相等,应该改为:

    if(*(p1+i) != *(p1+m-1-i))这是指针指向的内存单元值的比较。

  12. 匿名用户2024-01-18

    **复制起来,你就得玩**麻烦看图片了。

  13. 匿名用户2024-01-17

    char hello;

    strcpy(hell0,"中国你好世界");

    你误会了,我刚才用了100,只是我估计它够大了,跟你后来计算字符长度没有关系,因为是自动补充的。'\0'目标。 现在不要定义长度,这样你就可以理解了。

  14. 匿名用户2024-01-16

    hello 只是一个指针变量,不会产生任何动态差异。

    hello = "中国你好世界";这样,在赋值的时候,hello指向一个内存块,具体的常量存储也不知道。它似乎是在编译时分配的,全局存储。

    hello = "_fgfdgdf" ;此赋值与上面相同,没有任何动态内容,只是指针变量更改为指向新内存。

    指针变量实际上是一个变量,就像 int a, a = 10, a = 20 一样。 只是它所指向的记忆存在差异。

    free(hello);这是错误的,hello 只是一个指针,它指向的内存没有分配在堆上。

  15. 匿名用户2024-01-15

    指针必须是常量,并且有许多编译器尚不支持可变长度数组。

  16. 匿名用户2024-01-14

    为什么您的指针没有创建内存 野生指针当前出错。

  17. 匿名用户2024-01-13

    将后意函数中的 *p 更改为 *&p。

  18. 匿名用户2024-01-12

    p是什么东西? 只有 int*p 的开头; ,函数是直接调用的?

相关回答
18个回答2024-06-08

因为你要求它输出一个长整数(即一个 64 位整数),而你提供的参数是一个整数(只有 32 位)。 >>>More

10个回答2024-06-08

在 Windows 平台上 +VC 指针是 4 个字节,我不知道你在用什么。 >>>More

15个回答2024-06-08

第一个 awhile(leap) 条件是 leap 是否为 true(如果 leap 不是 0,则为 true,如果为 0,则为 false)。 >>>More

14个回答2024-06-08

这其实是可以理解的。

只需将 %s、%c、%p 放在一起即可。 >>>More

16个回答2024-06-08

字符数组的赋值有两种类型:单字符赋值和字符串赋值。 >>>More