高级指针的应用
来源:互联网 发布:怎么下载word2010软件 编辑:程序博客网 时间:2024/05/27 02:32
#import <Foundation/Foundation.h>
#import "Function.h"
//void printTwoArray(int (*array)[3],int row);
//void printTwoArray(int (*array)[3],int row){
// for (int i = 0; i < row; i++) {
// for (int j = 0; j < 3; j++) {
// printf("%d\t",*(*(array + i) + j));
// }
// printf("\n");
// }
//}
// 数组使用指针的形式当做函数参数
// 以下两种写法完全等价,实质上都是传入的数组的首地址
//void printArray(int *array[],int count){
// for (int i = 0; i < count; i++) {
// printf("%d\t",*(array + i));
// }
// }
//int changeString(char *str){
// int i = 0;
// int count = 0;
// while (*(str + i) != '\0') {
// if (*(str + i) == 'a') {
// count ++;
// *(str + i) = 'A';
// }
// i ++;
// }
// printf("%d个a\n",count);
// return count;
//}
//typedef struct Student{
// char name[20];
// char sex;
// int age;
// float score;
//}STUDENT;
////结构体类型的数组当做函数参数
//void changeStudentAge(STUDENT *stus){
// stus -> age = 18;
//}
//
//void checkStudentsAge(STUDENT *stus , int count){
// for (int i = 0; i < count; i++) {
// if ((*(stus + i)) . age < 18) {
// changeStudentAge(stus + i);
// }
// printf("%s,%d\n",(stus+ i)->name,(stus + i)->age);
// }
//}
int main(int argc,const char * argv[]) {
///利用指针变相的实现一次函数调用拿到多个结果
//先准备好两个存放最大值和最小值的变量
//把两个变量的地址传过去,函数里面通过地址给两个变量赋值
// void swap(int * a, int *b);
//STUDENT stu = {"zhangsan", 'M', 25, 86.7};//在栈区存储
//定义一个结构体类型的指针指向一个结构体变量的首地址
//*p取出的是整个结构体变量,使用.访问成员
//printf("%lu", sizeof(stu));
// STUDENT * p = &stu;
// //(*p).sex = 'f';
// //strcpy((*p).name, "lisi");//数组名是常量地址,不能进行修改重新赋值,要用strcpy(),进行修改
//使用指向结构体变量的指针加上->(指向)操作符,访问结构体的成员
// strcpy(p->name, "lisi");
// p->age = 23;
// p->sex = 'F';
// printf("%s, %c, %d, %f", p->name, p->sex, p->age, p->score);
// printf("%s, %c, %d, %f", (*p).name, (*p).sex, (*p).age, (*p).score);
// STUDENT stu = {"zhangsan", 'M', 25, 86.7};
// STUDENT * p = &stu;
////p->name得到的是一个指针,可以直接重新指向
// p->name = "lisi";
// printf("%s", p->name);
//// STUDENT stu1 = stu;
// STUDENT * p = &stu;
// STUDENT * p1 = &stu1;
// strcpy(p->name, "lisi");
// printf("%s, %s", p->name, p1->name);
// char name[20] = "zhangsan";
// STUDENT stu = {name, 'M', 25, 86.7};
// STUDENT stu1 = stu;
// STUDENT * p = &stu;
// STUDENT * p1 = &stu1;
// strcpy(name, "lisi");
// printf("%s, %s", p->name, p->name);
// STUDENT stus[3] = {
// {"zhangsan", 'M', 25, 98.2},
// {"lisi", 'F', 21, 85.7},
// {"wangwu", 'M', 18, 93.6},
// };
// STUDENT * p = stus;//数组名本身就是地址
//// printf("%s\n", (*p).name);
//// printf("%s\n", (*(p + 1)).name);//加的是32个字节
//// printf("%s\n", p->name);
//// printf("%s\n", (p + 1)->name);
////使用结构体指针把数组中学生成绩大于90的姓名后面拼上(A)
// for(int i = 0; i < sizeof(stus) / sizeof(STUDENT); i++){//总的除以单个得到的是就是数组元素的个数
// if((p + i)->score >= 90){
// strcat((p + i)->name, "(A)");//strcat()字符串拼接函数,不是字符拼接函数,如果要拼接A,应该拼接为"A"
// }
// }
// for(int i = 0; i < sizeof(stus) / sizeof(STUDENT); i++){
// printf("%s %.2f\n", (*(p + i)).name, (*(p + i)).score);
// }
// int x = 10, y = 15;
// swap(&x, &y);
// printf("x = %d y = %d", x , y);
// int a = 2;
// int b = 3;
// int c = 4;
// return max;
// //int result = max(2, 3, 4);
// printf("max = %d", result);
// int max = 0;
// int min = 0;
// maxValue(10, 15, 12, &max, &min);
// printf("max = %d, min = %d", max, min);
// 计算字符串中所有的小写字母a的个数,并把小写a改成大写A
// char string[] = "afhdjkahhfahjkaghakjhkjhgahahag";
// changeString(string);
// printf("改变字母之后的数组为%s",string);
//
//
// STUDENT stus[3] = {
// {"zhangsan", 'M', 16, 98.2},
// {"lisi", 'F', 21, 85.7},
// {"wangwu", 'M', 18, 93.6},
// };
// checkStudentsAge(stus , 3);
// changeStudentAge(stus);
//整形的指针数组
// 数组里面每个元素都是地址,数组总共占24个字节内存。每个指针占用8个内存空间
// int a = 5;int b = 6;int c = 3;
// int *p[3] = {&a,&b,&c};
// printf("%d\n",*(*(p + 1)));//*(p+i)取出的为地址
// for (int i = 0; i < 3; i++) {
// printf("%p ",*(p + i));
// }
// for (int i = 0; i < 3; i++) {
// printf("%d ",*(*(p+i)));
// }
// char strings[3][10] = {"iphone","Android","winPhone"};//在栈区开辟一个30个字符的内存空间
// strings[0] = "Apple";错误
// strcpy(strings[0], "apple");
// char * strings[3] = {"iphone","Android","winPhone"};//字符型指针数组,存储3个常量区字符串的地址。
//// 可以直接重指向
// strings[0] = "Apple";
// for (int i = 0; i< 3; i++) {
// printf("%s ",*(strings+i));
// }
// int a = 5;
// int *p = &a;
// int ** p1 = &p;//指向指针的指针
// printf("%d",*(*p1));
// int array[2][3] = {{1,6,8},{2,7,5}};
// int (*p)[3] = array;//指向由三个元素组成的一维数组的指针
// printf("%d",*(*(p + 1) + 1));//*(p + 1)取出的是大数组中的下标为1的一个一维数组中的首地址,即为2,*(*(p + 1)+1)取出的是下标为1的一维数组中的首地址向后移动4个字节之后的地址,即为7
// 二维数组的第二维度必须要写
// 定义一个指向二维数组的指针
// int array[2][3] = {{1,2,3},{4,5,6}};
// printTwoArray(array,2);
return 0;
}
- 高级指针的应用
- 指针高级的应用
- 指针的高级应用
- 函数指针的高级应用
- 指针高级应用(一)
- 指针高级应用(二)
- 变长数组(指针高级应用)
- 高级指针概念和应用
- 高级指针的概念和应用完整版(图文讲解)
- 结构体对函数指针的高级封装应用
- 高级指针的运算
- 高级指针的剖析
- C++抽象编程——指针(4)——指针的高级应用
- C语言强化指针高级应用学习心得
- 内存。二重指针,指针的高级使用
- Listview的高级应用
- wait的高级应用
- BrowserManager的高级应用
- PB中取得数据窗口所有列名以及列标题名称
- QuickContactBadge去掉三角
- STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- OC利用类别对类进行模块化设计和使用类别来调用私有方法
- STL(八):函数对象、 函数对象与容器、函数对象与算法
- 高级指针的应用
- python 读取CSV 文件
- 《快来看一只老鼠下了13只小老鼠》
- STL(九):函数适配器bind2nd 、mem_fun_ref 源码分析、函数适配器应用举例
- cocos2dx 3.2版本获得精灵缩放后的尺寸大小
- 你理解我的意思么?
- 中国顶级黑客的生意—---在商业利益与社会责任间两难抉择
- STL(十):迭代器适配器{(插入迭代器back_insert_iterator)、IO流迭代器(istream_iterator、ostream_iterator)}
- cocos2d-x 弹入、弹出效果(以菜单为例子)