C语言指针笔记
;笔记1:
#include <stdio.h> #include <stdlib.h> int main(void) { //申明结构体类型 struct book{ int price;//价格 char *name;//书名 char *nr[50];//描述 }; struct book book1 = { 20,"调皮翻蛮的辣条","辣条的未解之谜1" }; struct book book2 = { 23,"西游记","西天取经" }; struct book book3 = { 23,"聊斋","鬼怪传说" }; printf("书名: %s\t价格: %d\t描述: %s\n",book1.price,book1.name ,book1.nr ); printf("书名: %s\t价格: %d\t描述: %s\n",book1.price,book1.name ,book1.nr ); printf("书名: %s\t价格: %d\t描述: %s\n",book1.price,book1.name ,book1.nr ); puts("===========结构体指针==========="); struct book *pb = &book1; printf("书名: %s\n",book1.name ); printf("书名: %s\n",pb->name); struct book array[3]={ {12,"天外飞仙","d1"}, {12,"水浒传","d2"}, {12,"变形金刚","d3"} }; int i; for(i = 0;i<3;i++){ printf("书名: %s\n",array[i].name); } puts("===========结构体指针==========="); struct book book22 = { 30,"小说","修仙" }; int * pp = &book22; printf("book22的地址%d",&book22); printf("pp的值%d",pp); printf("%d\t%s",array[0].price,array[0].name,array[0].nr); return EXIT_SUCCESS; }
数组:
#include <stdio.h>
#include <stdlib.h>
int main(void){
int array[10] = {1,2,3};//定义数组
int *p = array; //取地址
int *p2 = &array; //取地址
int *p3 = &array[0]; //取地址
//三种指针效果相同
printf("%d\n%d\n%d\n",p,p2,p3);
//指针运算 需要根据指针的类型来运算
int *p4 = (array+1); //加1,单片机和电脑不一样,单片机加2,电脑是加4的。
printf("%d\n",p4);
int *p5 = (array+2);
printf("%d\n",p5);
printf("-----------\n");
double dd[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%d\n",dd);
printf("%d\n",dd+1); //地址加8
printf("%d\n",dd+2);
}
笔记2:
int main() {
int i=10;//定义一个整型变量i
int *p;//声明了一个指向整型的指针
p=&i;//&i代表i的地址,把i的地址赋给执针p
printf("%d\n",*p);//*p代表指针p所指的变量,就是i
(*p)++; //由于++运算符的优先级,比指针运算符的高,一定给"*p加括号
printf("%d\n",i);
return 0;
}
枚举:
enum Color{
//各个枚举项可以独立赋值
RED =2,BLUE,YELLOW =10
};
int main(void) {
//枚举的指默认从0开始,逐渐加1
//直接使用枚举内容,不需要用名字(出来)
printf("%d\t%d\t%d\n",RED,BLUE,YELLOW);
return EXIT_SUCCESS;
}
浙公网安备 33010602011771号