标签: pointer-to-pointer

指针数组的动态内存分配

我正在尝试编写一个程序,该程序从文本文件中读取一系列字符串,并将它们存储在字符串数组中,为每个元素动态分配内存.我的计划是使用指针将每个字符串存储在一个数组中,然后在读入更多数据时增大数组大小.我无法理解为什么我的测试代码无效.这是一个可行的想法吗?

char *aPtr;
aPtr =(char*)malloc(sizeof(char));

aPtr[0]="This is a test";


printf("%s",aPtr[0]);
Run Code Online (Sandbox Code Playgroud)

c arrays dynamic-memory-allocation pointer-to-pointer

19
推荐指数
3
解决办法
5万
查看次数

如何使用指针指向C中的结构?

我想在双指针下改变结构的成员.你知不知道怎么?

示例代码

typedef struct {
    int member;
} Ttype;

void changeMember(Ttype **foo) {
   //I don`t know how to do it
   //maybe
   *foo->member = 1;
}
Run Code Online (Sandbox Code Playgroud)

c struct pointer-to-pointer

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

为什么pthread_join()的第二个参数是**,指向指针的指针?

我是新手,pthread也不熟悉指针指针.有人可能会解释为什么第二个论点pthread_join()是a void **.为什么这样设计.

int pthread_join(pthread_t thread, void **value_ptr);
Run Code Online (Sandbox Code Playgroud)

c pointers pthreads pass-by-value pointer-to-pointer

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

多维数组和指针指针

当你创建多​​维数组时char a[10][10],根据我的书,它说你必须使用类似的参数char a[][10]将数组传递给一个函数.

为什么必须指定这样的长度?你是不是只是将一个双指针传递给了,并且那个双指针是否已经指向已分配的内存?那么为什么参数不能char **a呢?您是否通过提供第二个10来重新分配任何新内存.

c arrays pointers pointer-to-pointer

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

为什么我应该使用双指针变量来接收另一个指针的地址(&ptr1)

int num = 45,*ptr1,*ptr2;
ptr1=#
ptr2=&ptr1;
printf("%d\n",*ptr1);
Run Code Online (Sandbox Code Playgroud)

我一直在考虑这个问题,但找不到理解它的方法,为什么&ptr1不能ptr2在第3行分配,&ptr1是指针的地址,这个地址与其他地址没有区别,如地址比如说整数

int a=1;
ptr2=&a;
Run Code Online (Sandbox Code Playgroud)

这意味着我可以为指针分配一个整数的地址,但不能指向指针的指针地址,这两个"地址"之间的差异是否可能使它们不同?公共变量的地址可以分配给单个指针,但是指针的地址不能分配给单个指针?

我知道正确的方法是使用双指针来声明ptr2,但为什么单个指针不能?

c pointers pointer-to-pointer

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

无法理解符号:*和**带指针

我的指针有问题.我知道这是做什么的:

*name
Run Code Online (Sandbox Code Playgroud)

我明白这是一个指针.

我一直在寻找,但我不明白这个人做了什么,也没有找到有用的信息

**name
Run Code Online (Sandbox Code Playgroud)

上下文是int**名称,而不是乘法

有人能帮助我吗?

c++ pointers dereference pointer-to-pointer

6
推荐指数
3
解决办法
312
查看次数

关于双指针和三指针/双维数组

所以,我正在玩C指针和指针算术,因为我对它们不太满意.我想出了这段代码.

char* a[5] = { "Hi", "My", "Name", "Is" , "Dennis"};
char** aPtr = a; // This is acceptable because 'a' is double pointer
char*** aPtr2 = &aPtr; // This is also acceptable because they are triple pointers
//char ***aPtr2 = &a // This is not acceptable according to gcc 4.8.3, why ?

//This is the rest of the code, the side notes are only for checking
printf("%s\n",a[0]); //Prints Hi
printf("%s\n",a[1]); //Prints My
printf("%s\n",a[2]); //Prints Name
printf("%s\n",a[3]); //Prints Is
printf("%s\n",a[4]); …
Run Code Online (Sandbox Code Playgroud)

c pointers pointer-to-pointer

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

当第一个指针被释放时,指向另一个指针的指针会发生什么?

我已经使用 malloc 模拟了一个堆栈,以创建一个 MAX 元素数组并将其分配给一个指针。然后我创建了一个指向第一个指针的第二个指针,以便能够来回导航,执行推送和弹出。

int * stack= (int *) malloc(MAX * sizeof(*stack));
int * stack_ptr = stack;
Run Code Online (Sandbox Code Playgroud)

最后,我删除包含数组的指针,使用

free (stack);
Run Code Online (Sandbox Code Playgroud)

删除数组(stack)后,stack_ptr指向一个没有内容的地址,对吗?

即使程序恰好在此之后终止,这是否会导致内存泄漏或任何类型的问题?

c malloc pointers pointer-to-pointer

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

空指针指针(void **)

我正在http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd389098(v=vs.85).aspx上阅读COM示例。

我真的无法理解(void **)

hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
Run Code Online (Sandbox Code Playgroud)

所以我尝试了由类的不同类型的指针返回的一些值

class Point{
private:
    int x, y;
public:
    Point(int inputX, int inputY){x = inputX, y = inputY;}
    int getX(){return x;}
    int getY(){return y;}
    friend ostream& operator << (ostream &out, Point &cPoint);
    Point operator-(){
        return Point(-x, -y);
    }
};

ostream& operator << (ostream &out, Point &cPoint){
    return out<< "(" << cPoint.x << ", " << cPoint.y << ")";
}
Run Code Online (Sandbox Code Playgroud)

然后打印出来

Point *p = new Point(1,2);
cout << p << endl << …
Run Code Online (Sandbox Code Playgroud)

c++ com pointers void-pointers pointer-to-pointer

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

为什么处理对象经常出现为指向指针的指针

将句柄的句柄设置为指针指针但不是指针的意图是什么?如下代码:

FT_Library library;
FT_Error error = FT_Init_FreeType( &library );
Run Code Online (Sandbox Code Playgroud)

哪里

typedef struct FT_LibraryRec_  *FT_Library
Run Code Online (Sandbox Code Playgroud)

所以&library是一个FT_LIBraryRec_类型的句柄FT_LIBraryRec_**

c pointers handle pointer-to-pointer

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