标签: pointers

获取C中的锯齿状数组长度

代码:

int *Array[8];

  Array[0] = (int *) malloc(sizeof(int) * 5);

  printf("%d" , sizeof(Array)/sizeof(int));  // Result = 8 : True
  printf("%d" , sizeof(Array[0])/sizeof(int)); // Result = 1 : False
Run Code Online (Sandbox Code Playgroud)

如何获得5的Array [0]的长度?

c pointers

0
推荐指数
1
解决办法
202
查看次数

通过函数更深入地传递指针

我有一个我正在编写的网络框架(试图通过UDP实现可靠的层).我有这个接收函数,接受指向数据包对象的指针.然后,网络框架完成一整套内容以接收数据包,并将数据包指针的值设置为此数据包.但这会发生一些深层次的功能.所以我基本上想知道的是,为什么这不适合我的工作:(非常基本的例子向你展示我的意思)

void Main()
{
   int* intPointer = NULL;
   SomeFunction(intPointer);
   //intPointer is still null?
}
void SomeFunction(int* outInt)
{
   SomeOtherFunction(outInt);
}

void SomeOtherFunction(int* outInt)
{
   outInt = new int(5);
}
Run Code Online (Sandbox Code Playgroud)

c++ parameters pointers

0
推荐指数
1
解决办法
724
查看次数

对于不同的数据类型,sizeof(datatype_pointer)/ sizeof(datatype)的值不同,为什么?

我在我的C++程序中声明了以下结构:

    struct person {
        char name[10];      /* first name */
        char id[10];        /* ID number */
        off_t pos;      /* position in file, for demonstration */
    } people[] = {
        { "arnold", "123456789", 0 },
        { "miriam", "987654321", 10240 },
        { "joe",    "192837465", 81920 },
    };

        j = sizeof(people) / sizeof(people[0]);     /* count of elements */
Run Code Online (Sandbox Code Playgroud)

这里给出j = 3,即数组中没有元素; 总是即使你添加或减少元素......

         char b[8];
         i = sizeof(b)/sizeof(b[0]);
Run Code Online (Sandbox Code Playgroud)

在我的机器上给出i = a constant = 4的值.

现在这是合理的,因为sizeof(char*)在我的机器上是常量,而sizeof(char)也是常量.

但是一旦我声明了struct person,sizeof(person*)和sizeof(person)也应该是常量,并且它也应该产生一个常量值,不是吗?

c c++ arrays pointers sizeof

0
推荐指数
1
解决办法
144
查看次数

获取C中所有除数的数字

我正在尝试构建一个需要1个参数的函数:数字为char []并返回一个以除数作为字符串的char**.

我已经提出了以下功能,它只适用于某些数字.

char** calc_div(char nr[100])
{
int nri,i,ct=0;
char **a = (char**)malloc(sizeof(char*));
nri = atoi(nr);

for(i=0;i<sizeof(char*);i++)
    a[i] = (char*)malloc(sizeof(char));

for(i=1;i<=nri;i++)
    if(nri % i == 0)
    {
        sprintf(a[ct++],"%d",i);
    }

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

这适用于22,33,77这样的数字,但不适用于66或88(它只是卡在某处).谁能帮助我?

c gcc pointers

0
推荐指数
1
解决办法
173
查看次数

什么是*variablename和&variablename之间的区别

在Objective C,C和其他指针支持的语言中,*variablename和&variablename之间的区别是什么.这两个都包含地址位置吗?

c variables pointers objective-c ampersand

0
推荐指数
1
解决办法
1243
查看次数

为什么指针不能分配给C中的数组?

我有以下代码:

int *pa;

int a[3] = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

为什么pa = a没问题,但a = pa是不允许的?

c arrays pointers

0
推荐指数
1
解决办法
180
查看次数

如何初始化这个指针数组?

我真的不确定它是什么(如果它是一个指针数组,或指针数组的数组???),但当我通过调试器踩它时它给了我0xCDCDCDCD,意味着内存被分配,但未初始化.谁能告诉我如何初始化它?

谢谢.

char* (*vars)[4];
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的东西,但它会产生编译错误:

for (int i = 0; i < 4; i++)
    vars[i] = new char*[new char*][4]; // error C2440: 'initializing' : cannot convert from 'char **' to 'unsigned int'
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers initialization

0
推荐指数
1
解决办法
7601
查看次数

c ++标题多个变量指针包含

我遇到了这样的问题:

我有一个头文件:

//first variant:  
#ifndef LIBRARIES_H
#define LIBRARIES_H
 const char a='4';    
 #endif // LIBRARIES_H
Run Code Online (Sandbox Code Playgroud)

我将它包含在几个.cpp文件中.一切都很完美.

但突然间,如果我宣布一个指针:

//second variant:
#ifndef LIBRARIES_H
  #define LIBRARIES_H
 const char *a="asdfgh";
 #endif // LIBRARIES_H
Run Code Online (Sandbox Code Playgroud)

请注意,我只声明其中一个(变种).
我只宣告了一次(我试图更改sadfgh或asdfg的名称).

当我尝试第二个变体时,我先删除,反之亦然.

如果我声明一个指向字符串的指针,我将得到错误"多次包含变量".我用qt编译它.我已经删除并重新编译了几次项目. 在此输入图像描述

当然,我可以在main()函数中定义它,但我想知道,这个问题的原因是什么?为什么我不能在头文件中声明指针,然后将它包含在几个源代码文件中?

c++ pointers declaration global-variables include

0
推荐指数
1
解决办法
528
查看次数

指向指针向量的指针的内存消耗

我知道指针的大小是固定的(不是它指向的数据的大小).现在考虑到这一点,假设我在全局范围内有一个数据向量,并且我声明了指向一些/所有全局数据的指针向量的指针,这将额外使用多少内存(RAM)?我在这里完全不知所措,肯定会感谢一些想法/建议.我希望额外的内存消耗只是向量的大小乘以指针的固定大小(比如8字节),而不管数据的复杂程度如何; 因为它指向的数据存在于全球范围内(即,没有分配新数据;希望我已清楚地解释了我的想法).

一些表达我的问题的伪代码看起来像:

std::vector<data> global_data;
std::vector<data*>* my_data = new std::vector<data*>();  //-Is this even valid? 
//-Now populate the vector with pointers to data in global_data
for(int i=0; i<global_data.size(); ++i) {
   my_data->push_back(&global_data[i]);
}
Run Code Online (Sandbox Code Playgroud)

然后我的问题是RAM中有多少额外的内存(即,超过已经使用的内存来自创建global_data)被m_data用尽了

c++ pointers

0
推荐指数
1
解决办法
449
查看次数

如何在Python中实现指针?(或其他任何类似的解决方案)

我有一个类,它将被实现为许多实例.我想保持一些实例之间的连接,并在它们之间传递消息.在C++中,我可以这样做:

class A
{
   A (*connections)[];
   int sum;

public:
   void pass(int index)
   {
       connections[index] -> receive(sum);
   }
   void receive(int input)
   {
       sum += input;
   }
}
Run Code Online (Sandbox Code Playgroud)

然后我只需要添加其他实例的指针connections[],我可以互相传递消息.

目前我必须使用Python来做这件事,但Python不支持指针.我想知道解决这个问题的正确解决方案或设计模式是什么?

先感谢您.

python pointers

0
推荐指数
1
解决办法
3392
查看次数