重游C之----指针

VC注意路径:不能含有中文

关键字:

1.1,最宽恒大量的关键字----auto

auto:它很宽恒大量的,你就当它不存在吧。编译器在默认的缺省情况下,所有变量

都是 auto的。

1.2,最快的关键字----register

register:这个关键字请求编译器尽可能的将变量存在 CPU内部寄存器中而不是通过内

存寻址访问以尽可能提高效率,CPU不直接和内存打交道,通过寄存器,皇帝身边的小太监,谁是皇帝,谁是太监?为什么?

1.3,最名不符实的关键字----static

1.3.1修饰变量。变量又分为局部和全局变量,但它们都存在内存的静态区。

1.3.1.1静态全局变量:作用域仅限于变量被定义的文件中,其他文件即使用 extern声明也没法使用他。准确地说作用域是从定义之处开始,到文件结尾处结束,在定义之处前面的那些代码行也不能使用它。想要使用就得在前面再加extern

1.3.1.2静态局部变量:在函数体里面定义的,就只能在这个函数里用了,同一个文档中的其他函数也用不了。由于被 static修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值还是不会被销毁,函数下次使用时仍然能用到这个值

1.3.2,修饰函数

修饰函数。函数前加 static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件 (所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。

1.4,基本数据类型----short、int、long、char、float、double

32位的系统上

short咔出来的内存大小是 2个 byte;int咔出来的内存大小是 4个 byte;

long咔出来的内存大小是 4个 byte;float咔出来的内存大小是 4个 byte;

double咔出来的内存大小是 8个 byte;char咔出来的内存大小是 1个 byte。(注意这里指一般情况,可能不同的平台还会有所不同,具体平台可以用 sizeof关键字测试一下。

1.5,最冤枉的关键字----sizeof

常年被人误认为函数 sizeof是关键字不是函数,计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。一般情况下,咱也别偷这个懒,乖乖的写上括号,继续装作一个“函数”,做一个“披着函数皮的关键字”。做我的关键字,让人家认为是函数去吧。

1.6同样我们的 signed关 键字也很宽恒大量,你也可以完全当它不存在,编译器缺省默认情况下数据为 signed类型。的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的旅游小程序代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义结构体表示旅游景点信息 typedef struct { char name[50]; char location[50]; int rating; int price; } Destination; // 定义函数获取用户输入 void get_input(char *prompt, char *buffer, int buffer_size) { printf("%s", prompt); fgets(buffer, buffer_size, stdin); // 去掉末尾的换行符 buffer[strcspn(buffer, "\n")] = 0; } // 定义函数打印景点信息 void print_destination(Destination *dest) { printf("%s (%s)\n", dest->name, dest->location); printf("Rating: %d stars\n", dest->rating); printf("Price: $%d\n", dest->price); } // 定义函数查找景点 Destination *find_destination(Destination *destinations, int num_destinations, char *name) { for (int i = 0; i < num_destinations; i++) { if (strcmp(destinations[i].name, name) == 0) { return &destinations[i]; } } return NULL; } // 主函数 int main() { Destination destinations[] = { {"Great Wall", "China", 5, 20}, {"Eiffel Tower", "France", 4, 25}, {"Statue of Liberty", "USA", 3, 30}, {"Pyramids", "Egypt", 4, 15} }; int num_destinations = sizeof(destinations) / sizeof(Destination); // 打印所有景点信息 printf("Available destinations:\n"); for (int i = 0; i < num_destinations; i++) { print_destination(&destinations[i]); } char name[50]; get_input("\nEnter destination name: ", name, sizeof(name)); // 查找用户输入的景点 Destination *dest = find_destination(destinations, num_destinations, name); if (dest == NULL) { printf("Destination not found.\n"); return 0; } // 打印用户选择的景点信息 printf("\nYou selected:\n"); print_destination(dest); // 定义指针变量并分配内存空间 int *num_tickets = malloc(sizeof(int)); if (num_tickets == NULL) { printf("Memory allocation failed.\n"); return 0; } // 获取用户输入的门票数量 get_input("Enter number of tickets: ", name, sizeof(name)); *num_tickets = atoi(name); // 根据门票数量计算总价 int total_price = *num_tickets * dest->price; printf("\nTotal price: $%d\n", total_price); // 释放内存空间 free(num_tickets); return 0; } ``` 该程序使用了数组来存储旅游景点信息,使用函数来获取用户输入、打印景点信息、查找景点等操作,使用指针来动态分配内存空间并在程序结束时释放。程序中还使用了循环结构和分支结构来实现不同的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值