C语言指针算术运算和结构体
指针算术运算
指针算术运算是指对指针变量进行加、减等运算。指针运算只有针对的是拥有某种类型的指针时才是有意义的,而且仅有两个指针的差异才有实际意义。指针变量与整数值进行运算时,整数值被转换为指向相应元素的指针。
以下是一些指针算术运算的示例:
1. 指针的加法运算
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *p = arr;
int i;
for (i = 0; i <= 4; i++) {
printf("%d ", *p);
p++; // 指针变量p加1
}
return 0;
}
上述示例程序中,定义一个整型数组arr和一个指向该数组首地址的指针p。遍历数组元素时,使用指针变量p来访问数组元素。通过指针加法运算,p的值每次增加一个int类型所占的字节数,即p指向下一个数组元素的地址。
2. 指针的减法运算
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *p = arr + 4; // 指向数组最后一个元素的地址
while (p >= arr) {
printf("%d ", *p);
p--; // 指针变量p减1
}
return 0;
}
上述示例程序中,定义一个整型数组arr和一个指向该数组最后一个元素的指针p。从数组尾到数组头遍历数组元素时,使用指针变量p来访问数组元素。通过指针减法运算,p的值每次减少一个int类型所占的字节数,即p指向前一个数组元素的地址。
结构体
结构体是一种自定义数据类型,可以将不同的数据类型组合在一起形成一个新的数据类型。结构体可以包含基本数据类型、数组、指针、其他结构体等等。定义结构体后,可以根据结构体类型定义变量,使用符号“.”访问结构体成员。
以下是一个简单的结构体示例:
#include <stdio.h>
struct student {
char name[20];
int age;
float score;
};
int main() {
struct student s = {"Tom", 18, 89.5};
printf("name: %s\nage: %d\nscore: %.1f", s.name, s.age, s.score);
return 0;
}
上述示例程序中,定义了一个名为student的结构体,该结构体包含三个成员:char类型的name数组、int类型的age、float类型的score。程序中声明一个student类型的结构体变量s,并初始化name、age、score成员的值。通过“.”符号访问结构体成员,输出结构体变量s的name、age、score。
结构体还可以使用指针访问结构体成员。以下是一个结构体指针示例:
#include <stdio.h>
struct student {
char name[20];
int age;
float score;
};
int main() {
struct student s = {"Tom", 18, 89.5};
struct student *p = &s;
printf("name: %s\nage: %d\nscore: %.1f", p->name, p->age, p->score);
return 0;
}
上述示例程序中,定义了一个名为student的结构体,该结构体包含三个成员:char类型的name数组、int类型的age、float类型的score。程序中声明一个类型为“struct student*”指针变量p,将p指向结构体变量s的地址。使用“->”符号访问结构体成员,输出结构体变量s的name、age、score。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言指针算术运算和结构体 - Python技术站