怎么得到一个int*类型的大小
时间: 2024-05-04 10:17:48 浏览: 47
获取int指针类型的大小,可以使用sizeof运算符,如下所示:
```
int* ptr;
size_t size = sizeof(*ptr);
```
这里的`*ptr`是解引用ptr指针,得到指针所指向的int类型的值,然后使用sizeof运算符获取该类型的大小,即为int指针类型的大小。在本例中,size的值应该是4或8(取决于机器的位数)。
相关问题
编写函数得到一个int型数组中的最大元素及其下标值和对应的地址值,函数形式为:int *findMax(int *arr,int n,int *index),其中n为数组的大小,index为下标值,返回一个指针值,即对应的最大元素的地址。用C语言写代码
以下是用C语言编写的函数代码:
```c
#include <stdio.h>
int *findMax(int *arr, int n, int *index) {
int max = arr[0];
*index = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
*index = i;
}
}
return &arr[*index];
}
int main() {
int arr[] = {10, 20, 30, 40, 50};
int n = sizeof(arr) / sizeof(arr[0]);
int index;
int *max = findMax(arr, n, &index);
printf("Max element: %d\n", *max);
printf("Index: %d\n", index);
printf("Address: %p\n", max);
return 0;
}
```
在这个程序中,`findMax`函数接收一个整数类型的数组、数组的大小和一个指向索引变量的指针作为参数。它遍历整个数组,查找最大的元素,并记录其索引。然后,它返回最大元素的地址,同时修改传递给它的索引变量的值。
在`main`函数中,我们定义了一个整数类型的数组,并通过`sizeof`运算符计算出其大小。然后,我们调用`findMax`函数来查找最大元素,并输出最大元素的值、索引和地址。
int cmp(const void *p1, const void *p2) { int *pp1 = *(int **)p1; int *pp2 = *(int **)p2; return pp1[0] >pp2[0]; }
这段代码是一个用于比较两个整数数组的排序函数。它使用了C语言中的qsort函数来进行排序。在这个函数中,p1和p2是指向待比较元素的指针,它们被强制转换为指向int型指针的指针。通过对这些指针进行解引用和类型转换,我们可以获得指向实际整数数组的指针pp1和pp2。
然后,通过比较pp1和pp2指向的数组的第一个元素,函数返回一个整数值来表示它们的大小关系。如果pp1[0]大于pp2[0],则返回一个正值;如果pp1[0]小于pp2[0],则返回一个负值;如果pp1[0]等于pp2[0],则返回0。
这个排序函数可以用于对二维整数数组按照第一列元素进行升序排序。
阅读全文