标签: pointers

指向C中结构的指针

typedef struct stack{
 int size;
 int array[30];
}STACK;

int p;
STACK *W;
Run Code Online (Sandbox Code Playgroud)

(*W).array和之间有什么区别 (*W).array[0]
如果我有Wp?如何获得指向数组中第一个元素的int指针?

c pointers structure

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

我再次对指针感到困惑

在我班上的讲义中,有一个功能

Obj3D * findObject (int objID) {
   Obj3D *pObj = ...
   if (pObj == 0) {
      throw BadObjectID (objID);
   return pObj;
Run Code Online (Sandbox Code Playgroud)

为什么函数返回指向对象的指针,但函数的返回类型是一个对象?

c++ pointers

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

指针映射的数组下标运算符

我有一个带有std ::指针映射的结构体.我正在尝试执行以下操作:

template <class T>
struct Foo
{
    std::map<std::string, T*> f;
    T& operator[](std::string s)
    {
        return *f[s];
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

Foo<Bar> f;
f["key"] = new Bar();
Run Code Online (Sandbox Code Playgroud)

但它写的方式,它崩溃了程序.我也尝试过这样:

T* operator[](std::string s)
{
    return f[s];
}
Run Code Online (Sandbox Code Playgroud)

但它没有编译.它说"lvalue required as left operand of assignment"f["key"] = new Bar()行了.

我希望它很容易,因为我正在尝试返回一个指针而我正在存储一个指针.我的代码出了什么问题?

c++ arrays pointers map subscript

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

处理对象或指针之间的区别?

所以说我有一个对象/指针/无论这个东西的定义是什么:

A* a = new A();
Run Code Online (Sandbox Code Playgroud)

碰巧有方法

b();
c();
Run Code Online (Sandbox Code Playgroud)

我发现的做事方式是这样的:

a->b();
Run Code Online (Sandbox Code Playgroud)

这个方法运作得很好.但是现在我看到有人这样做:

(*a).b();
Run Code Online (Sandbox Code Playgroud)

问题是:这两种调用方法的方法之间有什么区别(即每个方法管理的地址和值如何),根据这种方式,最好使用哪种方法?

如果这是其他问题的副本,请告诉我,我会在看到原始问题后将其删除.

c++ pointers object

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

指针malloc失败

我试图定义一个包含节点*next的节点结构.我编写了一个append(node* n?函数来在前​​一个节点旁边添加一个新节点,但是每次运行代码时,它都会给我一个seg错误.我的代码如下:

#include<stdlib.h>
#include<stdio.h>


typedef struct _log_t {
  struct _log_t* next;
}log_t;

void initi(log_t* l) {
  l = (log_t*)malloc(sizeof(log_t));
  l -> next = NULL;
}

void append(log_t* l){
  l->next = (log_t*)malloc(sizeof(log_t)); 
  l->next->next = NULL;
  l = l->next;
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

c malloc pointers

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

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

数据定义没有类型或存储类

我试图将存储分配给结构指针.这是代码 - 你能告诉我我做错了什么吗?

can.h对应

#ifndef CAN_H_
#define CAN_H_

typedef struct {
  u32  id;
  u32  mask;
  char length;
  char data[8];
  char status; 
} CAN_PACKET;
Run Code Online (Sandbox Code Playgroud)

project.c

#include "can.h"

CAN_PACKET *packet_Tx, *packet_Rx;
CAN_PACKET packet1, packet2;
packet_Tx = (CAN_PACKET*)malloc(sizeof(CAN_PACKET));      /* line 20 in text */
packet_Tx = &packet1; packet_Rx = &packet2;

int main(void)
{
  while(1)
  {
        }
}
Run Code Online (Sandbox Code Playgroud)

我收到这些错误/警告:

警告1数据定义没有类型或存储类c:\ users\blu\documents\avrstudio\Can5\Can5\Can5.c 20 2 Can5

警告2类型在'packet_Tx'的声明中默认为'int'c:\ users\blu\documents\avrstudio\Can5\Can5\Can5.c 20 2 Can5

错误3'packet_Tx'c的冲突类型:\ users\blu\documents\avrstudio\Can5\Can5\Can5.c 20 2 Can5

错误4先前'packet_Tx'的声明在这里c:\ users\blu\documents\avrstudio\Can5\Can5\Can5.c 18 13 Can5

警告5初始化从指针生成整数而没有强制转换c:\ users\blu\documents\avrstudio\Can5\Can5\Can5.c 20 14 Can5 …

c malloc struct pointers typedef

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

C中赋值的类型不兼容

我在c中的指针和结构有点问题.

struct foo{
char a[15];
}

void asn_foo(struct foo *pa){
    (*pa).a = "123";
}

main()
{
    struct foo foo1[2], *pf;
    pf = &(foo1[0]);
    asn_foo(pf);
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过以下方式分配新值:

(*pa).a = "123";
Run Code Online (Sandbox Code Playgroud)

但是我在这一行上有错误"赋值不兼容".我究竟做错了什么?

c pointers structure function

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

C编程; 需要左值

可能重复:
左值必需错误

我的C程序出错了

main () {
    int arr[] = {1, 2, 3, 4};
    printf("%d", *arr);
    arr++;
    printf("%d", *arr);
}
Run Code Online (Sandbox Code Playgroud)

当我编译这段代码时,我得到左值所需的错误.对于带有arr ++.任何帮助!

c pointers lvalue

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

为什么要删除实例转换的向量?

这不是一个实际问题,但它只是为了教育好奇心.

在一些论坛中,我刚刚发现了这段代码:

std::vector<MyClass*> myvec;
for(unsigned int i = 0; i < 100; ++i) {
  myvec.push_back(new MyClass( foo1 ));
}

// somewhere in the code inside a particular if statement
MyClass* replacement = new MyClass( foo2 );
delete myvec[0];
myvec[0] = replacement;
Run Code Online (Sandbox Code Playgroud)

我有一个MyClass实例的向量,在代码中的某处我必须用其他实例替换某些实例.

为什么我要拨打删除?更换指针不够吗?

我学到了什么:

c++ pointers vector delete-operator

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