1)指针
int* pa = &a; :声明了一个整型指针变量 pa,并将其指向变量 a 的地址。
char* pb = &b; :声明了一个字符型指针变量 pb,并将其指向变量 b 的地址。
int* pc = &c; :声明了一个整型指针变量 pc,并将其指向变量 c 的地址。
*pc = 200; :通过指针 pc 解引用,即获取指针指向的变量的值,并修改为 200。
- 指针是存储内存地址的变量,通过指针可以访问和修改内存中的数据。
- 通过使用 & 运算符可以获取变量的地址,并将其赋值给指针变量。
- 使用 * 运算符对指针进行解引用操作,可以获取指针指向的变量的值或修改它。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 10;
int* pa = &a;
printf("%p\n", &a);
char b = 'w';
char * pb= &b;
printf("%p\n", &pb);
int c=100;
int * pc=&c;
*pc=200;
printf("%d\n",c);
return 0;
}
2)指针大小
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
printf("%d\n",sizeof(char*));
printf("%d\n",sizeof(short*));
printf("%d\n",sizeof(int*));
printf("%d\n",sizeof(long*));
printf("%d\n",sizeof(long long*));
printf("%d\n",sizeof(float*));
printf("%d\n",sizeof(double*));
return 0;
}
(3)结构体
定义了两个结构体类型:
struct stu:包含 name(字符数组)、age(整数)和 score(双精度浮点数)成员。
struct book:包含 name(字符数组)、price(双精度浮点数)、sales(单精度浮点数)和 id(字符数组)成员。
创建了一个 struct stu 类型的变量 s,并使用初始值列表对其进行初始化,设置了 name、age 和 score 成员的值。
使用 printf 函数打印了结构体变量 s 的成员值,包括 name、age 和 score。
创建了 struct stu 类型的指针变量 ps,并将其指向结构体变量 s。
使用 (*ps).member 的格式和 ps->member 的格式打印了 ps 指针所指向的结构体变量 s 的成员值,分别打印了 name、age 和 score。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
struct stu
{
char name[20];
int age;
double score;
};
struct book
{
char name[20];
double price; //double通常具有更高的精度,可以更好地处理小数值
float sales;
char id[20];
};
int main()
{
struct stu s = { "张三",20,87.5 }; //创建结构体和初始化
printf("1:%s %d %f\n", s.name, s.age, s.score);
//.为结构成员方位操作符
struct stu* ps = &s;
printf("2:%s %d %f\n", (*ps).name, (*ps).age, (*ps).score);
printf("3:%s %d %f\n", ps->name, ps->age, ps->score);
//->操作符
struct book k = { "普通心理学",48.8,39.9,"bk001" };
printf("%s,%lf,%lf,%s\n", k.name, k.price, k.sales, k.id);
return 0;
}