符号 | %d | %ld | %c | %f | %u | %hd | %lf | %x | %o | %s |
类型 | int | long int | char | float | 无符号 | 短整型 | double | 16进制输出 | 8进制输出 | 字符串 |
-
输入
main(){
int year,month,day;
scanf("%d%d%d",&year,&month,&day);
printf("year=%d\nmonth=%d\nday=%d\n",year,month,day);
}
-
数据类型
计算数据类型及变量占用的字节数 sizeof(char)
C | 无,用int表示 |
Java | boolean |
-
指针
//地址: &变量, &取地址符号
//指针:一个变量地址,是一个常量
int i=10;
printf(&i);
//通过变量地址取值:*地址
*(&i)=i
//指针变量,也占用内存
int p=&i //是错误的,不能随便定义一个变量定义变量地址
int *p; p=&i; //定义:要存放地址数据类型、*符号、指针变量
//指针变量更改变量值
int *p=&i;
*p=1000 //i=1000;
//例如
main(){
int a=1;
int b=100;
swap1(a,b);
swap(&a,&b);
}
void swap1(int i,int j){
int temp=i;
i=j;
j=temp;
//只是i、j、temp在操作,与a、b无关
}
void swap1(int *p,int *q){
int t=*p;
*p=*q;
*q=t;
//直接交换地址
}
//备注: sleep(1)单位是秒
-
字符串,字符串数组
//C语言没有string类型,需要用字符数组和字符串表示
// c语言字符串以一个空字符为结束(\0 值是0) 。所以ch2是字符串,ch1是字符数组
char ch1[]={'1','q','a'};//ch1占用字节数:3
char ch2[]="1qa"; //ch2占用字节数:4
char ch3[]={'1','q','a','\0'}; //可以作为字符串,等于ch2。
char ch4[]={'1','q','a','\0','1','e'};//strlen 计算长度以\0为终结,并忽略\0。
char ch1[]={'a','b','c','\0','q','w'};//字符数组
char ch[]="abc";//字符串
char *p;
p=&ch[0];
printf("%c\n",*p);//a
printf("%s\n",p);//abc,字符串第一个元素的地址就是字符串的地址
//若p=&ch[1]; 则打印b和bc
练习
//1.用字符指针改变字符串字符
void main()
{
char ch[]="hello word";//字符串
char *p=&ch[0];
//移到下一个字节 p++;
while(*p!='\0'){
if(*p==' '){
*p='!';
break;
}
printf("%c\n",*p);
p++;
}
printf("%s",ch);
}
//2.将一个字符串反序后保存原有控件
#include "stdio.h"
#include <string.h>
void main()
{
char ch[100]="hello word";
int size=strlen(ch);
//定义指针变量和交换字符的临时变量
char *head,*tail,temp;
//head存放指向字符串的第一个元素tail指向最后一个元素
head = &ch[0];
tail= &ch[0] + size - 1;
while(head<tail){
temp=*head;
*head=*tail;
*tail=temp;
head++;
tail--;
}
printf("%s",ch);
}