C语言第九讲(PointerPro)
来源:互联网 发布:七彩虹淘宝旗舰店 编辑:程序博客网 时间:2024/05/16 11:44
//
// main.m
// LessonPointerPro
//
// Created by lanouhn on 15/5/1.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
#import
int main(int argc, const char * argv[]) {
//结构体
//
// struct student {
// char name[20];
// char gender;
// int age;
// };
//
// //结构体重命名
// typedef struct student Student;
////
//
// //结构体变量
// Student stu={"hanmeimei",'f',18};
//
//
// // 访问结构体的成员变量
// printf("%s\n",stu.name);
// printf("%c\n",stu.gender);
// printf("%d\n",stu.age);
//
// //结构体指针变量
//
// Student *p =NULL;
// //指针指向了结构体变量的首地址,相当于指向了结构体第一个成员变量的首地址
//
// p=&stu;
//
//
// //注:*p取到的是结构体变量stu
//
// printf("%s\n",(*p).name);
// printf("%c\n",(*p).gender);
// printf("%d\n",(*p).age);
//
// //->:指向操作符
// //当定义了一个结构体指针变量指向结构体变量的首地址,可以使用->(指向操作符),访问结构体的成员变量;
// printf("%s\n", p->name);
// printf("%c\n", p->gender);
// printf("%d\n", p->age);
////定义一个点坐标的结构体CPoint,包含两个float 成员x,y
// struct cPoint{
// float x;
// float y;
//
// };
//
// typedef struct cPoint CPoint;
// //定义两个CPOint结构体变量m,n
//
// CPoint m={10,10};
// CPoint n={7,6};
//
// //使用两个结构体指针分别指向m,n
// CPoint *p1=&m;
// CPoint *p2=&n;
//
// //然后通过指针计算两点距离(提示:1.勾股定理.2.开方函数sqrt)
// //1.
//// float x1=1.0;
//// float x2=1.;
//// float x3=1.f;
//// float x4=1.0f;
//// float x5=1;
//// 1.
// //float length=(m.x-n.x)*(m.x-n.x)+(m.y-n.y)*(m.y-n.y);
// //length=sqrtf(length);
// //printf("%.2f",length);
// //2.
//// float length=powf((p1->x-p2->x), 2)+powf((p1->y-p2->y), 2);
//// length=sqrtf(length);
//// printf("%.2f",length);
//
//
// // 把下面结构体变量的姓名的首字母大写,并且把空格改成下划线
// Student stu1={"zhang san feng",'m',18};
// //1.
////strcpy(stu1.name,"Zhang_san_feng");
// //huozhe
//// stu.name[0]='Z';
//// stu.name[5]='_';
// //2.
//// if (stu1.name[0]>='a'&&stu1.name[0]<='z') {
//// stu1.name[0]-=32;
//// }
//// printf("%c\n",stu1.name[i]);
//// int i=0;
//// while (stu1.name[i]!='\0') {
//// if (stu1.name[i]==' ') {
//// stu1.name[i]='_';
//// }
//// i++;
//// }
// //3.
//// Student *p3=&stu1;
//// if (p3->name[0]>='a'&&p3->name[0]<='z') {
//// p3->name[0]-=32;
//// }
//// printf("%c\n",p3->name[0]);
//// int i=0;
//// while (p3->name[i]!='\0') {
//// if (p3->name[i]==' ') {
//// p3->name[i]='_';
//// }
//// i++;
//// }
//// printf("%s\n",p3->name);
////4.
// char *p3=stu1.name;
// printf("%c\n",*p3);
//
//// if (p3[0]>='a'&&p3[0]<='z') {
//// p3[0]-=32;
//// }
//// printf("%c\n",p3[0]);
//// int i=0;
//// while (p3[i]!='\0') {
//// if (p3[i]==' ') {
//// p3[i]='_';
//// }
//// i++;
//// }
//// printf("%s\n",p3);
//结构体数组和指针的关系
// int a[5] = {1, 2, 3, 4, 5};
// int *p=a;
// printf("%d ",*p);
// Student s[5] = {
// {"ahuang",'f',5},
// {"xiyangyang",'f',10},
// {"huluwa",'m',2},
// {"tianxianbaobao",'m',7},
// {"guixianren",'m',100}
// };
//
// Student *q = s;
// printf("%s\n",(*q).name);
//
//%o, 八进制
//%x, 十六进制
//printf("%x\n",56);//38
/// *s:第一个结构体变量 s[0]
//*(s+1):第二个结构体变量s[1]
//...
//*(s+i):第i+1个结构体变量s[i]
//s[0].name
//(*s).name s[0].name
//(*(s+1)).name s[1].name
//... ...
//(*(s+i)).name s[i].name
//s:第一个元素的首地址(数组的首地址)
//s+1:第二个元素的首地址
//...
//s+i:第i+1个元素的首地址
//注:元素就是结构体变量
//一旦有了指向结构体变量首地址的指针,可以使用->(指向操作符)访问结构体变量的成员变量
//s->name s[0].name
//(s+1)->name s[1].name
//... ...
//(s+i)->name s[i].name
//打印结构体数组的每个元素
// for (int i=0; i<5; i++) {
// printf("%s %c %d \n",(s+i)->name,(s+i)->gender,(s+i)->age);
// }
//
// for (int i=0; i<5; i++) {
// printf("%s %c %d \n",(*(s+i)).name,(*(s+i)).gender,(*(s+i)).age);
// }
// for (int i=0; i<5; i++) {
// printf("%s %c %d \n",s[i].name,s[i].gender,s[i].age);
//
// }
// 结构体数组中的姓名首字母大写,并且年龄增加10
// for (int i=0; i<5; i++) {
// if (s[i].name[0]>='a'&&s[i].name[0]<='z') {
// s[i].name[0]-=32;
// }
// s[i].age+=10;
// printf("%s %c %d\n",s[i].name,s[i].gender,s[i].age);
// }
//
// //2.
//
// for (int i=0; i<5; i++) {
// if ((s+i)->name[0]>='a'&&(s+i)->name[0]<='z') {
// (s+i)->name[0]-=32;
// }
// (s+i)->age+=10;
// printf("%s %c %d\n",(s+i)->name,(s+i)->gender,(s+i)->age);
// }
//
//指针数组
//int b[5] = {1, 2, 3, 4, 5,};
// int a = 2, b = 4, c = 6;
// int *array[3] = {&a, &b, &c};//zijie8*3
// printf("%p\n", array[0]);//&a
// printf("%p\n", array[1]);//&b
// printf("%p\n", array[2]);//&c
//
//
// printf("%p\n", *array); //&a
// printf("%p\n", *(array+1));//&b
// printf("%p\n", *(array+2));//&c
//
//
// printf("%d\n", *array[0]);//a
// printf("%d\n", *array[1]);//b
// printf("%d\n", *array[2]);//c
//
// printf("%d\n",**array); //a
// printf("%d\n",**(array+1));//b
// printf("%d\n",**(array+2));//c
//
//char string[] = "iphone";
//char *p = string;
// 给一个字符指针变量赋一个字符串,意味着把字符串的首地址存入字符指针变量
// char *p = "iphone";
// printf("%p\n",p);
//
//
//
// printf("%s\n",p);
//
char str1[] = "aaa";
char str2[] = "bbb";
char str3[] = "ccc";
// 字符指针数组
char *strs[3] = {str1, str2, str3};
//char strs2[3][4] = {str1, str2, str3}; 与上面一样
// strs[0]
// strs[1]
//
// *strs
// *(strs+1)//str2
//
// strs[0][0]
// strs[0][1]
//
// *strs[0]
// *(strs[0]+1)//第二个a
// *(strs+1)
//
// printf("%p\n",strs[0]);//地址
// printf("%s\n",strs[0]);//字符串aaa
//
// printf("%p\n",*(strs+1));//地址
// printf("%s\n",*(strs+1));//字符串bbb
//
// printf("%c\n",strs[1][1]);//字符串bbb的第二个字符b
// printf("%c\n",(*(strs+1))[1]);//字符串bbb的第二个字符b
// printf("%c\n",*((*(strs+1))+1));//字符串bbb的第二个字符b
// printf("%c\n",*(strs+1)[1]);//c
//a[i]=*(a+i);
return 0;
}
- C语言第九讲(PointerPro)
- C语言学习第九讲-指针
- C语言学习之关键字第九讲
- 《C语言及程序设计初步》第九讲实践项目(含第八讲)
- C语言第九课
- C语言第九课
- C语言第一讲
- C语言第二讲
- C语言第三讲
- C语言第四讲
- 第九讲
- 第九讲
- 第九讲
- 第九周:C语言:统计
- 第九周:C语言:等比数列
- c语言递归小讲
- 漫谈C指针第九讲---参数的值传递
- (C语言教程)第九章:预处理
- OC(实现简单通讯录操作)
- OC第五讲(NSNumber,NSArray,NSDictionary,NSSet等)
- DLX精确覆盖 zoj3209 Treasure Map
- Compare Version Numbers
- OC知识点重点整理(终极版)
- C语言第九讲(PointerPro)
- C语言第八讲(Pointer指针)
- OC第四讲(NSString字符串)
- UI_快捷菜单
- 验证码生成中"图像因本身错误无法显示的"错误解决办法
- [c/c++]使用宏函数实现的无锁队列
- C语言第七讲(Struct结构体)
- OC第三讲(Inherit 继承)
- OC第二讲(InstanceVariableAndMethod实例变量和方法)