指针
内存:是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的
一个变量,用来存放地址的
#include<stdio.h> int main() { int a = 10;//4个字节 int* p = &a;//取地址 //有一种变量是用来存放地址的 - 指针变量 printf("%p\n",&a); printf("%p\n",p); return 0; }
#include<stdio.h> int main() { int a = 10;//4个字节 int* p = &a;//取地址 *p = 20;//* - 解引用操作符/间接访问操作符 printf("a = %d\n",a);//20 return 0; }
结构体
#include <stdio.h> struct Book { char name[20]; short price=55; };//分号不可缺 int main() { //利用结构体类型 创建一个该类型的结构体变量 struct Book b1 = { "C语言程序设计" }; printf("书名:%s\n", b1.name); printf("价格:%d元\n", b1.price); b1.price = 15; printf("修改后的价格:%d元\n", b1.price); return 0; }
指针(pb)运用
#include <stdio.h> struct Book { char name[20]; short price=55; }; int main() { struct Book b1 = { "C语言程序设计" }; struct Book*pb = &b1; //利用pb打印出我的书名和价格 printf("%s\n",(*pb).name); printf("%d\n",(*pb).price); return 0; }
#include <stdio.h> struct Book { char name[20]; short price=55; }; int main() { struct Book b1 = { "C语言程序设计" }; struct Book*pb = &b1; //利用pb打印出我的书名和价格 printf("%s\n",pb->name); printf("%d\n",pb->price); //. 结构体变量.成员 //-> 结构体指引->成员 return 0; }
更改书名的方法
#include <stdio.h> #include <string.h> struct Book { char name[20];//字符串 short price=55;//变量 }; int main() { struct Book b1 = { "C语言程序设计" }; strcpy(b1.name,"C++");//字符串不能更改,只能重新拷贝一个名字放进去 //strcpy-string copy - 字符串拷贝 - 库函数 -string.h b1.price = 15;//变量,可以更改 printf("%s\n"b1.name); printf("%d\n"b1.price); return 0; }
分支语句(选择语句)和循环语句
一、分支语句(选择结构)
1、if语句
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include<stdio.h> int main() ( int age = 10; if(age<18) printf ("未成年\n"); else printf("成年\n"); return 0; }
#include<stdio.h> int main() ( int age = 10; if(age<18) printf ("未成年\n"); //else if(18<=age<28) // printf("青年\n"); //结果是青年 ---> 18<=age为假=>0 0<28为真 所以能打印 else if(age>=18 && age<28) printf("青年\n"); else if(age>=28 && age<50) printf("壮年\n"); else if (age>=5- && age<90) printf("老年\n"); else printf("老不死\n"); return 0; }
else 和离他最近的未匹配的if进行匹配
练习:判断一个数是否为奇数,输出1-100之间的奇数
#include <stdio.h> int main() { int i = 1; while(i<=100) { if(i%2 == 1) printf("$d ",i); i++; } return 0; }
#include <stdio.h> int main() { int i = 1; while(i<=100) { printf("%d ",i); i+=2; } return 0; }
2、switch语句
语法结构
switch(整形表达式)
{
语句项;
}
语句项:
case:整形常量表达式
#include <stdio.h> int main() { int day = 0; scanf("%d",&day); switch(day) { case 1: printf("星期一\n"); break; case 2: printf("星期二\n"); break; case 3: printf("星期三\n"); break; case 4: printf("星期四\n"); break; case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期日\n"); break; } return 0; }
#include <stdio.h> int main() { int day = 0; scanf("%d",&day); switch(day) { case 1: case 2: case 3: case 4: case 5: printf("工作日\n"); break; case 6: case 7: printf("休息日\n"); break; default: printf("输入错误\n"); break; } return 0; }
二、循环语句
1、while循环
语法结构:
if(条件)
语句;
练习:打印1-10
#include <stdio.h> int main() { int i = 1; while(i<=10) { printf(" %d",i); i++; } return 0; }
ps:while循环里有break和continue的情况
#include <stdio.h> int main() { int i = 1; while(i<=10) { if(i == 5) break; printf(" %d",i); i++; } return 0; } //只打印出 1 2 3 4 在为5时就跳出循环
#include <stdio.h> int main() { int i = 1; while(i<=10) { if(i == 5) continue; printf(" %d",i); i++; } return 0; } //打印 1 2 3 4死循环 continue会跳过其之后的语句,所以将i++放在前面,如下 #include <stdio.h> int main() { int i =0; while(i<=10) { i++; if(i == 5) continue; printf(" %d",i); } return 0; } //打印 1 2 3 4 6……
总结:continue时用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断
补充:getchar() putchar()的用法
#include <stdio.h> int main() { int ch = getchar();//接收一个键盘的字符,ch来接收其返回值 putchar(ch);//打印ch接收的键盘字符 return 0; } //getchar();的作用同printf("");相同
#include <stdio.h> int main() { int ch = 0; while((getchar())!=EOF)//ctrl + z 赋予ch一个EOF,即停止循环 { putchar(ch); } return 0; } //EOF - end of file 文件结束标志