Я знаю, что вы можете вернуть тип указателя из функции. ex. void *foo()
Можете ли вы вернуть тип указателя на указатель в функции? ex. void **foo2()
Можете ли вы вернуть тип указателя на указатель в функции?
Вот подробнее о моем вопросе:
Я пытаюсь назначить PTR к PTR, tmp2, к блокам [I] [J], а затем вернуться tmp2. блоки [i] [j] также являются ptr-to-ptr.
Я смущен, чтобы манипулировать ptr ptr-to-ptr: Я не уверен, что return ((tmp2+i)+j);
является причиной ошибки сегментации по строке printf("2---%d\n", **tmpPtr2);
. Для отладки я пытаюсь напечатать: printf("%d\n", *((*(tmp2+i)) +j));
Однако это вызывает новую ошибку сегментации.
#include <stdio.h>
#include <stdlib.h>
int **blocks, **tmp2;
int n = 10;
int **findBlock2(int b){
int i, j ;
for (i=0; i<n; i++){
for (j=0; j<n; j++){
if (blocks[i][j]==b){
printf("%d\n", blocks[i][j]);
//Segmentation fault
printf("%d\n", *((*(tmp2+i))+j));
return ((tmp2+i)+j);
}
}
}
return NULL;
}
int main(int argc, const char * argv[]) {
int i, j;
int **tmpPtr2;
//allocate memory space and assign a block to each index
blocks=malloc(n * sizeof *blocks);
for (i=0; i<n; i++) {
blocks[i]=malloc(n * sizeof(*blocks[i]));
blocks[i][0]=i;
}
if ((tmpPtr2=findBlock2(4))==NULL) return -1;
//Segmentation Fault
printf("2---%d\n", **tmpPtr2);
return 0;
}
Update, чтобы ответить на мой вопрос:
(1) Добавление т tmp2=blocks;
к началу findBlock2() удалены обе ошибки сегментации.
(2) return ((tmp2+i)+j);
показано, как манипулировать PTR-к-PTR, указывающую на PTR к PTR или 2D массива
(3) printf("%d\n", *((*(tmp2+i)) +j));
показывает, как это сделать (2) и разыменовать него.
Надеется, что это помогает другим
Да, попробуйте. – Jens
Вы на самом деле имеете в виду указатель на указатель функции? или это ответы на ваши вопросы? – AndrewGrant
Ответ да, но у вас, вероятно, есть связанная с этим проблема кодирования, которую вы пытаетесь решить, так что опубликуйте свой код и конкретную проблему, и вы получите гораздо лучший ответ, чем просто Да +, несколько примеров, которые скорее всего, не имеют отношения к вашей проблеме. –