Tag: 指针

在C中更改void指针值时出现问题

基本上我的问题是我正在尝试更改cambiar_valor变量中的值,以便在调用cambiar_valor函数之后它变为25.但我的问题是它根本没有变化。 我在这里做错了什么? 我正在尝试制作一个非常通用的函数,以便根据我传递给函数的数据类型,它会改变。 在这种情况下是一个整数类型,但我在这里尝试做的是检查我是否可以更改函数内的valor变量的值 #include #include void cambiar_valor(void* valor,int* valor_dos) {//assign valor_dos to valor valor = valor_dos; } int main() { void *valor; int *valor_dos = 25; cambiar_valor(valor,valor_dos); printf(“%d \n”,(int*)valor);//this should show 25 return 0; }

声明动态多维指针

是否可以在运行时声明N维指针? 例如,如果[N = 2,** p],[N = 3,*** p],[N = 4,**** p],等等。 如果是这样,怎么样?

利用字符串指针打印字符 – 整数组合

我有C函数,它将字符串指针作为参数。 此函数返回为指针指向的符号。 我想根据要求生成=多个符号。 假设,我家里有四扇门。 我想给不同的门提供不同的名字,比如d1,d2,d3…. 在这种情况下,我想创建一个指向字符串和整数的字符串指针,这样我就可以得到只有数值不同的符号。 这有助于我对看到字符串值的符号进行分类。 我想知道如何声明一个字符串指针,以便我可以创建一个我上面提到的符号。 [编辑] 我会尽力说清楚。 我有两个指针的数组 const char *test[] ={“a”,”12345″} 我想把指针指向a和1以及a和2 ……等等。 有没有办法做到这一点?

C:将数组(指针)传递给函数

我有一个函数我想有一个函数来接收一个2D数组(H),读取一个指定的列(col)并将其传递给另一个数组(b)。 看来下面的代码不行,我期待得到1打印。 非常感谢任何指导。 #define nline 5 #define ncol 4 #include #include #include #include void count0(int **M,int col, int *a); void main(){ int i; int **H; H=(int**)malloc(nline*sizeof(int*)); for(i=0;i<nline;i++){ H[i]=(int*)malloc(ncol*sizeof(int)); } H[0][0]=8; H[0][1]=5; H[0][2]=6; H[0][3]=0; H[1][0]=7; H[1][1]=5; H[1][2]=4; H[1][3]=0; H[2][0]=5; H[2][1]=1; H[2][2]=1; H[2][3]=7; H[3][0]=0; H[3][1]=0; H[3][2]=0; H[3][3]=2; H[4][0]=1; H[4][1]=0; H[4][2]=1; H[4][3]=4; int *b; int col=1; count0(H,col,&b); printf("num […]

插入二进制搜索树

我做了一个二叉搜索树 struct BTNode { int info; struct BTNode *left,*right; }; 我写了一个代码来在树中插入一个节点 void insert(struct BTNode *root,int data) { struct BTNode *ptr; struct BTNode *n=malloc(sizeof(struct BTNode)); n->info=data; n->left=NULL; n->right=NULL; if(root==NULL) root=n; else{ ptr=root; while(ptr!=NULL){ if(datainfo){ if(ptr->left==NULL) ptr->left=n; else ptr=ptr->left; } else if(data>ptr->info){ if(ptr->right==NULL) ptr->right=n; else ptr=ptr->right; } } } } 和main()函数 int main() { struct BTNode *root=NULL; […]

在Struct内部的指向Struct的Free()指针

我似乎无法找到如何free()子结构。 结构: typedef struct { char ID[5]; location *loc; } observer; typedef struct { double lat; double lng; } location; 我的Free()Wrapper是: void free_obs_list_node(void *data) { free(*(observer **)data); } 我可以释放观察者结构。 我无法释放指向结构位置的指针。 这是我的问题:如何释放location *loc;指向的location结构location *loc; 我使用了free()的包装器,因为这些是通用链表中的节点。

应该何时将数组名称视为指针,何时它只表示数组本身?

我刚读完这本书后做了一个测试程序,结果令人困惑: #include int main(void) { char text[] = “hello!”; printf(“sizeof(text):%d sizeof(text+2):%d sizeof(text[0]):%d \n”,(int)sizeof(text), sizeof(text+2), sizeof(text[0])); printf(“text:%p sizeof(text):%d &text:%p sizeof(&text):%d \n”,text, sizeof(text), &text, sizeof(&text)); printf(“text+1:%p &text+1:%p \n”, text+1, &text+1); return 0; } 结果: sizeof(text):7 sizeof(text+2):4 sizeof(text[0]):1 text:0xbfc8769d sizeof(text):7 &text:0xbfc8769d sizeof(&text):4 text+1:0xbfc8769e &text+1:0xbfc876a4 让我感到困惑的是: 为什么’sizeof(text)’的值是7而’sizeof(text + 2)’的值是4 ‘text’和’&text’之间有什么区别?

在C中使用a_list结构(共享内存中的链表)实现共享内存段

我需要创建一个共享内存段,使用我创建的结构来保存节点 struct a_list { //The head of the list that acts as a node, this list has a next* and a prev* struct list_head list; unsigned long* val; char* str; char state; }; 我尝试在堆栈上查找答案,但他们实现了一个Node而不是我的struct,这是一个包含节点的列表 我也有这个缓冲区和追加方法,我曾经附加到这个列表(使用malloc),但我知道对于共享内存我不能这样做 struct buffer { struct a_list* buffer[BUFFER_SIZE]; int in; int out; }; //Method to append a file to the end of […]

函数参数中的int * vs int vs int(*)。 我应该使用哪一个?

在C编程语言中,有许多不同的方法来声明函数的参数,该函数将数组作为通过指针传递的参数。 我准备了一个例子,告诉你我的意思。 它是C ++中std::accumulate函数的一个实现。 它是一个函数,它可以在数组中添加所有元素并返回结果。 我可以这样写: int accumulate(int n, int *array) { int i; int sum = 0; for (i = 0; i < n; ++i) { sum += array[i]; } return sum; } 这也可以写到这(这意味着完全相同): int accumulate(int n, int array[]) { int i; int sum = 0; for (i = 0; i < n; ++i) […]

取消引用指向不完整类型’struct ____’的指针

我试图在C中创建一个可以接受大多数原始类型的类型。 我是C的新手并且不太了解结构。 我的错误发生在第10行(main.c),如果第10行被删除(也是main.c),它也会出现在第11行。 如果有人有想法/指点我会非常感激! 非常感谢! main.c中: #include #include “modularType.h” int main() { int data = 1; PyType object = createPyObjectInt(data); printf(“Type of data: %d\n”, object->typeOfData); printf(“Value of data: %d\n”, object->intData); return 0; } modularType.h: typedef struct pytype *PyType; PyType createPyObjectEmpty(void); PyType createPyObjectInt(int data); void setDataInt(PyType, int data); void setDataIntStar(PyType, int* data); void freeMyType(PyType); void freeCharStar(PyType); […]