我在main函数中定义了变量
unsigned int *lp = NULL;
然后调用了函数A,函数A的定义如下
int A(const char *cp, unsigned int *lp)
{
/**cp是传进来的字符串*/
char cps[] = *cp;
/*对*lp做位操作*/
*lp << 8;
}
编译时Asan检查两处报错如下:
我有这些问题:
1.使用数组接收字符串为什么会报非法初始化?
2.第二处位操作的部分,我是想要在这里改变这个指针变量所指向的值,这个写法应该是不对的,但为什么会报内存错误呢?
3.位操作这一步,想实现改变指针变量指向值都可以有哪些写法呢?
c语言字符数组是不能接收字符串的,数组定义首先要规定数组大小。
char[] = "xxxx";
是可以的,char[] = cp;
不可以。*lp
要读取 lp
内所保存的地址的值,而 lp
保存的地址是 NULL
,不可读。*lp = *lp << 8;
, *lp <<= 8;
下面为了让大家更好的理解上面两个概念,我们来举几个例子来查看一下。 解释第一个概念:大小一样的盒子存储指针 代码如下 我们声明了两个类型的变量,它们的类型是不同的。我们通过sizeof来查看这两个指针变量的大小。 #include <stdio.h> int main(){ int *p1; char *p2; printf("the p1 is %u, th
你好,我正在学习OOP,通过编写一个虚拟的库管理项目在Java。 在serachBook()中,如果在ArrayList中找到book,则返回book对象,如果未找到,则抛出自定义异常BookNotFound。 问题1:它应该只返回null并在调用代码时检查返回值是否为null,还是抛出自定义异常BookNotFound。 目前我认为BookNotFinder是合适的,并且目前正在这样做。然而,我
这是我的建筑。格雷德尔: 我试图找出问题所在,使用以下代码来分析问题: 结果是:
我在使用fs.readfile进行同步时遇到了一个问题,他们没有在第一次初始化,如果我再次尝试请求,那么我就有结果了。我知道我可以用promise和我从Kriskowal找到一些有用的东西。我试过但没有成功。我不太明白如何实施它。如果有人能帮忙,我将永远感激。 代码:
事件处理程序添加到GameGui.java类的GridPane中,从第82行开始。 基本上,我试图找到您在网格窗格中拖动这个对象的任何节点的索引。通过将SetonMouseEnter应用到gridpane中的每个节点,我可以在不拖动的情况下完成这一任务,但是当我试图利用SetonMouseDragEnter时,我什么也没有得到。 有人有办法让这个工作吗? 这些是我应用于GridPane中节点的事件
多级指针概述 我们将指针变量理解为一个存储地址的变量。如果这个地址里面存储的依然是地址,那么我们就可以定义一个二维指针。通过一个二维指针,我们通过两次寻址操作就可以找到这个值。 比如我们定义一个int **p;这是一个二维指针,当编译器看到p的时候,它知道这是一个指针变量,指向一个地址;当它看到第二个的时候,它知道指向的地址里面依然还是地址。如下图所示: 如果我们将p[0]和p[1]分别指向两个字