假设一维数组a={1,2,3,4},基地址为100。求p的值。 我知道它会给出一维数组第 0 个元素的基地址。 但是c编译器会以第一种方式还是第二种方式评估这个? 第一: 或第二: ...
假设一维数组a={1,2,3,4},基地址为100。求p的值。 我知道它会给出一维数组第 0 个元素的基地址。 但是c编译器会以第一种方式还是第二种方式评估这个? 第一: 或第二: ...
我在 Linux 中收到奇怪的警告。在 Windows 上的 Visual Studio 中,代码编译并运行良好,但我需要使用 GCC c90 编译它,我收到这些警告: 我已经像这样初始化了矩阵: 现在我想创建一个矩阵数组: 我已经宣布了 function: 并使用它: 该代码运行良好,但我需要使 ...
在 C 中指向数组的指针的情况下,我对有效类型感到困惑。通过指向数组的指针访问单个成员是否仅在该成员的内存上或在数组包含的所有内存上传递有效类型? 标准在这方面是否明确? 这是一个实际的例子: 上面的代码是否调用了未定义的行为? 我在网上搜索,发现大多数关于聚合类型和有效类型的讨论都涉及结 ...
在 C 中,如果我们只访问属于已分配内存的元素,那么将内存分配不足给数组指针是否“合法”? 或者这是否会调用未定义的行为? 如果这本身不是未定义的行为,那么访问另一个不相关的对象,其内存地址恰好落在数组未分配部分的地址空间内会导致严格别名违规吗? ...
给定 C 中的指向数组的指针,我们能否为额外元素(超出指定的数组大小)分配足够的内存,然后使用 [] 运算符或指针算法安全地访问这些元素? 考虑这个例子: 此代码编译良好并在 gcc 中产生正确的结果。 但是,我不确定它是否会调用未定义的行为。 谢谢! ...
基于约定 int (*o)[5]=&s; 是指针 o 指向具有 5 个元素的数组的正确方法。 我们也可以在这个语句中写这个 s int (*p)[10]=s; 但是为什么在 int (*o)[5]=&s 处优先使用 &s; 因为他们都给出相同的输出。 这个程序的输出是: ...
我试图了解指向数组的指针是如何工作的。 一个代码片段; 星号*取消引用ptr 。 如果i = 1 ,为什么(*ptr+i) = ith value不是value at ptr + i 。 ...
鉴于代码: 我希望pv指向的数组的每个单独元素都乘以3 。 相反,我得到的输出是: 我究竟做错了什么? ...
int (*ptr)[10]; 我期望ptr是一个包含10整数的指针数组。 我不明白它是如何指向10整数数组的指针。 ...
我正在浏览这个问题的答案为什么在声明多维数组时允许省略第一维,而不是其他维度? 以及其他一些问题,我知道我们可以省略第一维,但不可避免地要指定其他维。 令我惊讶的是,以下代码执行得非常好: 但是,如果我使用指针p打印一些值,例如 它给出了一条错误消息说: 为什么 C 允许这种声明? 如果 ...
以下语句声明了一个不带参数并返回指向整数数组的指针的函数。 它返回一个指向大小为_____的整数数组的指针我们没有指定数组的大小,所以它应该给出某种警告或错误。 我问这个是因为当我们将二维数组或指向整数数组的指针传递给函数时,我们总是应该在声明形式参数中的指针时指定维度。 那么,为什么允许这个声 ...
在一些入门代码中,我们有: 在我们的主程序中,我们有: 我对 (*image) 感到困惑 如果我要定义一个指向 RGBTRIPLE 的指针,我想我会使用: 是不是和: ...
我想我错过了一些关键的东西,我找不到答案。 如果我想在结构中使用字符串,最好使用 char arrays 还是指向它们的指针? 以下代码按预期工作,但会引发警告“警告 C4047 'function': 'const char ' 在间接级别上与 'char ( )[3] 不同” 与以下结构定义一起 ...
在 C99 之前,C 标准是否允许定义或转换为指向arrays 的指针,其长度在运行时确定? 我了解该标准在 C99 之前不允许变长 arrays,但是是否允许指向运行时确定大小的 arrays 的指针对我来说并不明显,因为编译器知道多少 ZCD69B4957F06CD818DZBF3D6数组。 ...
我想交换定义如下的二维数组的两行。 但我的swap(mat, mat+1); 只交换每行的第一个元素。 如果我使用一个 2D 数组定义的double **mat;相同的交换工作。 具有动态分配的行和行。 ...
在以下 C 代码中: 那么以下不应该打印相同的内容吗?: 甚至,即使这些打印出不同的值: 怎么了? 谢谢 ...
最近从C#移到C ++,所以我是指针和引用等的新手。 我有这样声明的指针到指针数组 现在,我将一个方法组合在一起,该方法返回tile数组中某个单元的邻居,并检查每个邻居是否不等于NULL。 但是,即使检查它是否为null似乎也会引发错误,所以我很困惑。 我知道为什么会引发 ...
我不明白为什么应该执行矩阵乘法的这段代码会出错。 输入: 2x2矩阵,两个矩阵中都有元素1,2,3,4 预期产量: 7 10 15 22 此代码给出的输出: 15 22 12 16 我尝试使用这样的打印语句进行调试,结果如下: 当给定2x2矩阵,它们具有1,2,3 ...
在以下指向数组的指针中, 如果我不使用&运算符并这样做,我会有什么影响和后果。 任何人都可以举例说明。 ...
我有2-D阵列 和指向此数组的指针 如何使用此指针打印arr[2][2] ,在本例中为i 。 我试过* (*(ptr+1)+2)就像我处理数组一样但没有工作所以可以任何一个帮助并告诉我如何在这种情况下处理指向数组的指针来打印元素[2][2] 。 ...