Tag: 指针

使用指针知道数组的大小

如何使用malloc分配的指针知道数组的大小? #include int main(){ int *ptr = (int *)malloc(sizeof(int * 10)); printf(“Size:%d”,sizeof(ptr)); free(ptr_one); return 0; } 在这种情况下,我只得到指针的大小,即8.如何修改代码以获得40的数组大小。

衰变的多维数组从函数返回

与(gcc)Multi-Dim Array或Double Pointer for Warning-free Compile相关 ,有没有办法从函数中返回所谓的“衰减数组指针”? 总结(假设2 dim数组)返回int (*a)[5]格式而不是int**格式? 据我所知,当返回int**指针被发送到另一个函数waiting (int*)[]参数时,它无法正常工作。

从函数返回的字符串数组不能按预期工作

我试图将一个字符串数组传递给一个函数,在这个函数内部对它进行一些更改,然后将它传递回main()并打印它以查看更改。 它没有按预期工作。 请告诉我哪里出错了。 #include #include #include //don’t forget to declare this function char** fun(char [][20]); int main(void) { char strar[10][20] = { {“abc”}, {“def”}, {“ghi”}, {“”},{“”} }; //make sure 10 is added char** ret; //no need to allocate anything for ret, ret is just a placeholder, allocation everything done in fun int i = 0; […]

为什么我会出现分段失败?

这是我的代码。 我正在做一些C练习来处理文件 我不认为结构定义是问题,但我也发布它以给出一些上下文。 typedef struct carType Car; struct carType { int vehicleID; char make[20]; char model[20]; int year; int mileage; double cost; Car *next; }; 我认为这个function会导致分段失败。 void TextLoad(Car *headPointer) { char fileName[20]; //prompt user for name of textfile to print to scanf(“%s”, fileName); FILE *fpt; //estabish an IO connection fpt = fopen(fileName, “r”); //current car […]

C中函数指针语法的用途是什么?

编辑:有人指出,这个问题有点令人困惑。 短版本是:“为什么有一个单独的指针变量(例如, fnPtr )指向一个函数(例如, fn )当函数名称fn本身,没有参数,已经是一个指针?/ EDIT 我正在尝试理解某些内容,并且可以使用来自社区的有关函数指针的反馈。 (虽然这可能看起来像是关于这个主题的其他问题的重复,但实际上并非如此,至少不是我能找到的。) 我理解指向函数的指针的概念被用作另一个函数的参数作为回调…即告诉fn1在执行fn1期间以某种方式使用fn2 。 我不明白的是所有这些都使用了复杂的语法。 如果fn是一个已定义的函数,则调用fn(…)将使用提供的参数执行该函数。 但是, fn本身使用的是函数的地址,即指向函数的指针。 此外, fn , &fn和*fn都是一样的。 为什么有专用的函数指针,以及为什么要创建指向函数的新变量(即fnPtr )…函数名称已经是它自己的指针! 此代码每次编译和工作相同。 #include #include int fn(int var) { //fn is a function which takes an int and returns an int return var; } int (*fnPtrAmp)(int) = &fn; int (*fnPtr)(int) = fn; int needsCallback(int variable, int […]

C中的指针:两个声明中的差异

C中的以下声明是什么意思: char far *far *scr; char far far** scr; 从我收集的第一个语句是指向远的类型指针的指针? 第二个是指向远类型指针的指针?

如何将参考传递给2D数组作为参数

我有类似下面的代码,它不起作用,并保持抛出指针错误。 我该怎么办? #include int mat = {{1, 2, 3, 4}, {1, 4, 3, 2}, {9, 8, 7, 6}}; int main() { do_something_to_matrix(get_matrix()); } get_matrix() { return &mat; } do_something_to_matrix(int matrix[][4]) { //do some stuff }

为什么解除引用主函数不显示内存内容?

我试图获取函数名[abc()和main()]指向的地址的内存内容,但函数内的printf()都给出了相同的输出,尽管我取消引用了函数名所指的地址。每个函数内部的第二个printf()。 这是为什么? 为什么内存地址由*(abc)和*(main)而不是内容打印? #include void abc(){ printf(“\n%p \n “, abc); printf(“\n%#x\n “,*(abc)); } void main(){ abc(); printf(“\n%p \n “, main); printf(“\n%#x\n “,*(main)); }

在函数中交换两个数组的指针

我正在编写一个没有复制部分的mergesort到一个额外的临时数组。 出于这个原因,我创建了一个辅助arraysaux int * aux aux = (int *) calloc(n, sizeof(int)); 其中n是数组的大小。 在函数合并中,我想通过使用指针继续我的算法来在最后交换两个数组。 但是,如果我交换指针,并将它们打印到控制台,我得到了奇怪的东西: 在方法本身内,指针被交换。 但是,如果我检查我的方法,回到我的主,指针不再交换。 调用我的合并方法: merge(a, lo, mid, hi, aux); 其中a是我的主arrays,辅助和lo , mid和hi是整数。 原型: void merge(int *a, int lo, int mid, int hi, int *aux); 我试图像这样交换它们: int temp; temp = a; a = aux; aux = temp; 你能帮我解决这个问题吗? 提前致谢!

指向未知或不完整结构的指针

这个问题是对问题概念的测试。 为什么将类型定义为指向C中未定义结构的指针是有效的? 我知道这不是一个有用的程序,请弃权说“你没有定义这个和那个”。 讨论是关于opaque类型的指针aritmethic。 很抱歉打扰了太多人,但无论如何答案都很有用。 这个程序: struct st1 { int a,b; }; struct st2; typedef struct st2 *foo; typedef struct foo *bar; void main(void) { struct st1 *net=0; foo ft1=0; bar test=0; net++; ft1++; test++; } 用gcc编译时给出以下内容: pc:~$ cc tmp2.c tmp2.c: In function ‘main’: tmp2.c:17:6: error: increment of pointer to unknown structure ft1++; ^ tmp2.c:17:3: […]