我正在尝试编写一个程序,该程序从文本文件中读取一系列字符串,并将它们存储在字符串数组中,为每个元素动态分配内存.我的计划是使用指针将每个字符串存储在一个数组中,然后在读入更多数据时增大数组大小.我无法理解为什么我的测试代码无效.这是一个可行的想法吗?
char *aPtr;
aPtr =(char*)malloc(sizeof(char));
aPtr[0]="This is a test";
printf("%s",aPtr[0]);
Run Code Online (Sandbox Code Playgroud) 我想在双指针下改变结构的成员.你知不知道怎么?
示例代码
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) 我是新手,pthread也不熟悉指针指针.有人可能会解释为什么第二个论点pthread_join()是a void **.为什么这样设计.
int pthread_join(pthread_t thread, void **value_ptr);
Run Code Online (Sandbox Code Playgroud) 当你创建多维数组时char a[10][10],根据我的书,它说你必须使用类似的参数char a[][10]将数组传递给一个函数.
为什么必须指定这样的长度?你是不是只是将一个双指针传递给了,并且那个双指针是否已经指向已分配的内存?那么为什么参数不能char **a呢?您是否通过提供第二个10来重新分配任何新内存.
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,但为什么单个指针不能?
我的指针有问题.我知道这是做什么的:
*name
Run Code Online (Sandbox Code Playgroud)
我明白这是一个指针.
我一直在寻找,但我不明白这个人做了什么,也没有找到有用的信息
**name
Run Code Online (Sandbox Code Playgroud)
上下文是int**名称,而不是乘法
有人能帮助我吗?
所以,我正在玩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) 我已经使用 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指向一个没有内容的地址,对吗?
即使程序恰好在此之后终止,这是否会导致内存泄漏或任何类型的问题?
我正在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) 将句柄的句柄设置为指针指针但不是指针的意图是什么?如下代码:
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_**