定义一下几种变量:(1)含有10个元素的指针数组;(2)数组指针:(3)西数指针;(4)指向函数的指针数组
时间: 2024-01-04 17:02:29 浏览: 33
(1) 含有10个元素的指针数组:指针数组是一个数组,其中每个元素都是一个指针。这个数组中有10个元素,每个元素都可以指向不同的数据类型或者内存地址。
(2) 数组指针:数组指针是一个指向数组的指针,它可以指向一个一维或者多维数组,并且可以通过指针操作来访问数组中的元素。
(3) 结构体指针:结构体指针是一个指向结构体的指针,它可以访问结构体中的成员,并且可以通过指针操作来修改结构体中的数据。
(4) 指向函数的指针数组:指向函数的指针数组是一个数组,其中每个元素都是一个指向函数的指针。这个数组中有多个元素,每个元素都可以指向不同的函数。可以通过调用数组中的指针来执行相应的函数。
相关问题
. 定叉长度为了的整型教組,采用函数调用实现按照从大到小的 顺序排序。在主西数中输出排序前和排序后的数組。按以下四种方法实 现: (1)实参、形参为数组名; (2)实参为数组名,形参为指针麥量; (3) 实参为指针变量,形参为数组名: (4)实参为指针变量,形参为指针变量。
好的,下面是四种方法的代码实现:
(1) 实参、形参为数组名:
```c
#include <stdio.h>
void sort1(int arr[], int len) {
int temp;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 2, 8, 1, 9};
int len = sizeof(arr) / sizeof(arr[0]);
printf("排序前:");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
sort1(arr, len);
printf("排序后:");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
(2) 实参为数组名,形参为指针变量:
```c
#include <stdio.h>
void sort2(int *arr, int len) {
int temp;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (*(arr + j) < *(arr + j + 1)) {
temp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = temp;
}
}
}
}
int main() {
int arr[] = {5, 2, 8, 1, 9};
int len = sizeof(arr) / sizeof(arr[0]);
printf("排序前:");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
sort2(arr, len);
printf("排序后:");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
(3) 实参为指针变量,形参为数组名:
```c
#include <stdio.h>
void sort3(int arr[], int len) {
int temp;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 2, 8, 1, 9};
int len = sizeof(arr) / sizeof(arr[0]);
int *p = arr;
printf("排序前:");
for (int i = 0; i < len; i++) {
printf("%d ", *(p + i));
}
printf("\n");
sort3(p, len);
printf("排序后:");
for (int i = 0; i < len; i++) {
printf("%d ", *(p + i));
}
printf("\n");
return 0;
}
```
(4) 实参为指针变量,形参为指针变量:
```c
#include <stdio.h>
void sort4(int *arr, int len) {
int temp;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (*(arr + j) < *(arr + j + 1)) {
temp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = temp;
}
}
}
}
int main() {
int arr[] = {5, 2, 8, 1, 9};
int len = sizeof(arr) / sizeof(arr[0]);
int *p = arr;
printf("排序前:");
for (int i = 0; i < len; i++) {
printf("%d ", *(p + i));
}
printf("\n");
sort4(p, len);
printf("排序后:");
for (int i = 0; i < len; i++) {
printf("%d ", *(p + i));
}
printf("\n");
return 0;
}
```
以上四种方法都可以实现对整型数组的从大到小排序。其中,第一种方法的形参为数组名,与数组本身有相同的地址,因此可以直接对数组进行排序;第二种方法的形参为指针变量,需要用指针运算符 `*` 对指针进行解引用操作;第三种方法的实参为指针变量,需要用指针运算符 `*` 对指针进行解引用操作;第四种方法的实参和形参都为指针变量,需要用指针运算符 `*` 对指针进行解引用操作。
定义一个结构体类型 student(成员有:一个字符数组 no、一个字 符数组 name,一个整型变量 age,一个字符型变量sex 等,成员自己 可以根据需要添加),在main 西数内定义一个该结构体类型的变量,定义一个指向该变量的指针,给结构体变量各成员赋值并用指针将该变量的各成员值输出
好的,这是一个关于 C 语言的问题。可以回答。
代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char no[20];
char name[20];
int age;
char sex;
};
int main() {
struct student stu;
struct student *p = &stu;
strcpy(stu.no, "20210001");
strcpy(stu.name, "张三");
stu.age = 20;
stu.sex = 'M';
printf("学号:%s\n", p->no);
printf("姓名:%s\n", p->name);
printf("年龄:%d\n", p->age);
printf("性别:%c\n", p->sex);
return ;
}
```
输出结果如下:
```
学号:20210001
姓名:张三
年龄:20
性别:M
```