相关疑难解决方法(0)

C中的数组增量运算符

我不明白以下代码的结果:

#include <stdio.h>
#include <conio.h>
int main()
{
   int a[4]={1, 3, 5, 6};
   //suppose a is stored at location 2010
   printf("%d\n", a + 2);
   printf("%d", a++);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么第二个printf函数会产生以下错误?

error: lvalue required as increment operand

c pointers post-increment

9
推荐指数
1
解决办法
1万
查看次数

如何通过c中的指针传递二维数组

可能重复:
将表示2D数组的指针传递给C++中的函数

我试图通过指针将我的二维数组传递给函数,并希望修改值.

#include <stdio.h>

void func(int **ptr);

int main() {
    int array[2][2] = {
        {2, 5}, {3, 6}
    };

    func(array);

    printf("%d", array[0][0]);
    getch();
}

void func(int **ptr) {
    int i, j;
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 2; j++) {
            ptr[i][j] = 8;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但程序崩溃了.我做错了什么?

c c++ pointers

8
推荐指数
2
解决办法
8123
查看次数

foreach in C++ int array

我是C++的新手,我正在编写以下代码.我需要遍历调用函数中的所有插件 - testFunction.我知道这在C#中有效,但是这段代码不起作用.任何人都可以指出在C++中正确的方法吗?

#include "stdafx.h"
#include <iostream>
#include "resource.h"

int testFunction(char* tester);
int _tmain()
{
    int mainProd=2;
    int Addons[]={7,8,9,10};

    testFunction(mainProd,Addons);


}
void testFunction(int mainProd,int addons[])
{
    for(int x = 0 ; addons.length;++x) ---- Not working 
    {
        std::cout<< addons[x];
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图按照以下建议实现矢量

#include "stdafx.h"
#include <iostream>
#include "resource.h"
#include <vector>

void testFunction(std::vector<int> addons);

int _tmain(int argc, _TCHAR* argv[])
{

    std::vector<int>  Addons ;
    for(int i = 0 ;i<10;++i)
    {
        Addons.push_back(i);
    }
     testFunction(Addons);
}

void testFunction(std::vector<int> addons)
{
    for(int i =0 ; …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ c++11

8
推荐指数
2
解决办法
3万
查看次数

1D数组衰减到指针,但2D数组​​不这样做,为什么?

有人可以向我解释为什么技术上2D阵列实际上并没有衰减,int**而当你有一个单维数组时,你会得到指针衰减int*(如果你有数组int).

我理解指针衰减是什么,但我不明白为什么2D数组不会出现这种衰变?

对于C或C++新手而言,这是一个常见的混淆,但我发现自己也常常绊倒它.

c c++ pointers

8
推荐指数
1
解决办法
1210
查看次数

使用new运算符创建用户输入大小的数组

我有几个与数组相关的问题.我已经研究过,数组大小必须是常量的,声明/编译器必须知道它的值.但是使用GNU GCC编译器(C++ 11标准过滤器),我能够使用变量作为数组大小完美地编译和运行程序,同时动态声明所述数组(使用new)

int num;
cout << "How big an array? ";
cin >> num;
int *arr = new int [num];
Run Code Online (Sandbox Code Playgroud)

问题1)这被认为是标准吗?我的教授是矛盾的.

Ques2)如果它标准的,那么在创建之后是否可以扩展数组(或任何数组)的大小?

Ques3)同样,如果这个表达式是标准的,那么是否可以在函数中使用它 - 例如.使用函数创建这样的数组?(如果是这样,怎么样?)

(PS:嗨,我是新手,也是C++的新手)

c++ arrays dynamic-allocation

8
推荐指数
1
解决办法
1851
查看次数

指向C中的数组

我刚看到这个代码片段Q4,并想知道我是否理解正确.

#include <stdio.h>

int main(void)
{
   int a[5] = { 1, 2, 3, 4, 5 };
   int *ptr = (int*)(&a + 1);

   printf("%d %d\n", *(a + 1), *(ptr - 1));

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的解释:

int a[5] = { 1, 2, 3, 4, 5 };=> a指向数组的第一个元素.换句话说:a包含数组第一个元素的地址.

int *ptr = (int*)(&a + 1);=>这里&a将是一个双指针并指向整个数组.我把它想象成这样:int b[1][5] = {1, 2, 3, 4, 5};这里b指向一个2D数组的行.&a + 1应该指向内存中的下一个整数数组(不存在)[有点像,b + 1指向具有1行的2D数组的第二个(不存在的)行].我们把它转换为int …

c arrays pointers

8
推荐指数
2
解决办法
1721
查看次数

定义一个以std :: array作为参数的函数

这里的基本问题,(希望)一个简单的答案:我正在尝试编写一个函数,其第一个参数是std :: array,但具有任意大小.

void f(array<int> x) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

是无效的,因为我需要一个大小array<int, #>.有办法解决这个问题吗?

c++ arrays

8
推荐指数
3
解决办法
393
查看次数

找到二维字符串数组中的字符串数

给定一个字符串数组,我需要找出其中的字符串数.

我跟着这个

但如果我将其传递给函数,这不起作用.

这是我试过的代码

#include<string>
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int f1(char* input1[])
{

    string s="";

    cout<<sizeof(input1)<<endl; //print 4
    cout<<sizeof(char*)<<endl;  //print 4
    int l=sizeof(input1) / sizeof(char*);
    //giving l=1 here but should be 8
}

int main()
{
    char *str2[]={"baba","sf","dfvf","fbfebgergrg","afvdfvfv","we","kkhhff","L"};
    int l=sizeof(str2) / sizeof(char*);
    cout<<l<<endl; //print 8
    cout<<sizeof(str2)<<endl; //print 32
    cout<<sizeof(char*)<<endl; //print 4
    f1(str2);
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays string

8
推荐指数
1
解决办法
244
查看次数

指向数组的指针与指向数组第一个元素的指针之间的区别

int (*arr)[5]means arr是一个包含5个整数的指针数组.现在究竟是什么指针?

如果我声明指向第一个元素的指针int arr[5]在哪里,它是否相同arr

arr从两个例子是一样的吗?如果没有,那么究竟什么是指向数组?

c++ arrays pointers

7
推荐指数
4
解决办法
3189
查看次数

C++指针与数组表示法

当我声明一个像这样的新数组:

int foo[5]
Run Code Online (Sandbox Code Playgroud)

foo真正的指针数组的第一个元素?我能做到这一点:

*(foo+2)
Run Code Online (Sandbox Code Playgroud)

访问数组的第三个元素?假设我正在制作2D数组:

int foo[3][4]
Run Code Online (Sandbox Code Playgroud)

foo现在int**

c++ arrays pointers

7
推荐指数
1
解决办法
2443
查看次数