Tag: 双指针

想要从双指针传递单个char指针

我必须编写一个函数,它接受2个双指针(都是char类型)。 第一个双指针有一串查询值,第二个指针有停用词。 我们的想法是从查询字符串中删除停用词并返回没有这些停用词的所有单词。 例如 输入 – 查询:“the”,“new”,“store”,“in”,“SF” stopwords: “the”, “in” OUTPUT新店SF 我在尝试使用strtok时编写了以下代码,它只接受char类型的单个指针。 如何访问双指针的内容? 谢谢 #include void remove_stopwords(char **query, int query_length, char **stopwords, int stopwords_length) { char *final_str; final_str = strtok(query[0], stopwords[0]); while(final_str != NULL) { printf(“%s\n”, final_str); final_str = strtok(NULL, stopwords); } }

使用指向函数C语言的双指针访问2D数组

我试图在双指针的帮助下找到从C函数访问的2D数组中的所有值的最大值。 当我运行代码时,它会终止并返回任何值给调用者函数。 我试图更改代码以打印所有值以找出问题,并发现它只打印1和2作为输入以下示例数据。 对于示例代码运行,我提供了row = 2,col = 2和values = 1,2,3,4 请让我知道为什么? 如果你的问题不清楚,请说出来。 我度过了艰难的一天所以也许无法解释得更好。 代码有一些限制:1。函数签名(int ** a,int m,int n) #include int findMax(int **a,int m,int n){ int i,j; int max=a[0][0]; for(i=0;i<m;i++){ for(j=0;jmax){ max=a[i][j]; } //printf(“\n%d”,a[i][j]); } } return max; } int main(){ int arr[10][10],i,j,row,col; printf(“Enter the number of rows in the matrix”); scanf(“%d”,&row); printf(“\nEnter the number of […]

Mergesort – 分段故障

代码目录结构, ./Computing$ ls -LR .: list file.txt mergeSort.c program.exe type.h ./list: arrayImpl.c linkedListImpl.c list.h 编制程序: $./Computing gcc -Wall -Werror -DARRAY -I. mergeSort.c ./list/*.c -o program 这是包含文件的完整代码, mergeSort.c , list/* , type.h 使用List的给定表示, typedef struct List{ void **array; /* Housekeeping – Array enhancement/shrink */ int lastItemPosition; int size; }List; mergesort在list->array下面执行,其中aux维护array的浅表副本 void mergeSort(List *list, size_t listSize, isLess […]

使用双指针作为参数

请找到如下所示的代码段: #include int My_func(int **); int main() { int a =5; int *p = &a; My_Func(&p); printf(“The val of *p is %d\n,*p); } void My_Func(int **p) { int val = 100; int *Ptr = &val; *p = Ptr; } 如何在my_Func函数中使用双指针作为参数并更改值在main函数中反映相同但如果我们在My_Func中使用单个指针不会更改main中的值?请尽可能用示例解释我 高级谢谢 马迪

如何获得双指针指向的2D数组的大小?

我试图从指向数组的双指针获取2D数组的行数和列数。 #include #include void get_details(int **a) { int row = ??? // how get no. of rows int column = ??? // how get no. of columns printf(“\n\n%d – %d”, row,column); } 上面的function需要打印大小的细节,哪里出错了。 int main(int argc, char *argv[]) { int n = atoi(argv[1]),i,j; int **a =(int **)malloc(n*sizeof(int *)); // using a double pointer for(i=0;i<n;i++) a[i] […]

在C中为二维数组分配内存的最佳方法是什么?

从两个角度来看,在C为two-d array分配内存的最佳方法是什么: memory-management和speed ? 另外,哪个更好用,一个two-d array (并为它分配内存)或double pointer ? 有人可以详细解释一下,内部会发生什么,为什么一种方法比另一种更好?

链表头双指针传递

我在一些书/教程中看到了这一点。 将头指针(链接列表)传入函数时,需要将其作为双指针传递。 例如://这是为了反转头部指向第一个节点的链表。 void nReverse(digit **head) { digit *prev=NULL; digit *curr=*head; digit *next; while(curr!=NULL) { next=curr->next; curr->next=prev; prev=curr; curr=next; } *head=prev; return; } 这很好用。 当我使用单指针时,它也有效, void nReverse(digit *head) { digit *prev=NULL; digit *curr=head; digit *next; while(curr!=NULL) { next=curr->next; curr->next=prev; prev=curr; curr=next; } head=prev; return; } 我尝试使用头指针打印列表。 这两个function都很好。 我错过了什么吗? 谢谢,

将内存分配给双指针?

我无法理解如何为双指针分配内存。 我想读取一个字符串数组并存储它。 char **ptr; fp = fopen(“file.txt”,”r”); ptr = (char**)malloc(sizeof(char*)*50); for(int i=0; i<20; i++) { ptr[i] = (char*)malloc(sizeof(char)*50); fgets(ptr[i],50,fp); } 而不是这个我只是分配一个大的内存块并存储字符串 char **ptr; ptr = (char**)malloc(sizeof(char)*50*50); 那会错吗? 如果是这样,为什么呢?

使用双指针实现二维数组

请考虑以下代码: #include #include #define NUM_ARRAYS 4 #define NUM_ELEMENTS 4 #define INVALID_VAL -1 int main() { int index = INVALID_VAL; int array_index = INVALID_VAL; int **ptr = NULL; ptr = malloc(sizeof(int*)*NUM_ARRAYS); if (!ptr) { printf (“\nMemory Allocation Failure !\n\n”); exit (EXIT_FAILURE); } for (index=0; index<NUM_ARRAYS; index++) { *(ptr+index) = malloc(sizeof(int)*NUM_ELEMENTS); if (!*(ptr+index)) { printf ("\nMemory Allocation […]

如何在C中输入指向char的指针数组?

假设我在C中有一个指向char的指针数组: char *data[5] = { “boda”, “cydo”, “washington”, “dc”, “obama” }; 我希望使用qsort对这个数组进行排序: qsort(data, 5, sizeof(char *), compare_function); 我无法想出比较function。 出于某种原因,这不起作用: int compare_function(const void *name1, const void *name2) { const char *name1_ = (const char *)name1; const char *name2_ = (const char *)name2; return strcmp(name1_, name2_); } 我做了很多搜索,发现我必须在qsort里面使用** : int compare_function(const void *name1, const void *name2) { […]