// main.m
// 1-23随堂笔记
//讲师: 小辉
//笔者: 王学文
// Created by lanouhn on 15/1/23.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//pointer(指针高级)
#import <Foundation/Foundation.h>
#import "Function.h"
int main(int argc, const char * argv[]) {
/*
//整型数组
int array[5] = {1, 2, 3, 4, 5};
//指针变量
int *p = NULL;
//指针数组中每个元素的值(地址)对应的内容
int a = 1;
int b = 2;
int c = 3;
int *arr[3] = {&a, &b, &c}; //8 * 3个字节
printf("%lu\n", sizeof(arr));
//数组名是数组元素的首地址
printf("%p\n", arr);
//arr 0x1000
//arr + 1 0x1000
//arr + 2 0x1000
// *arr 0x200
// *(arr + 1) 0x300
// *(*arr) 1
// *(*(arr + 1)) 2
for (int i = 0 ; i < 3; i++) {
printf("%p ", arr + i);
printf("%p ", *(arr + i));
printf("%d\n", *(*(arr + i)));
}
//指针在函数中的使用
int i = 10;
int k = 20;
swap(i, k); //交换的是形参,实参没有发生变化
printf("i = %d, k = %d\n", i, k);
//传递指针, 可以改变i和k的值
swapPro(&i, &k);
printf("i = %d, k = %d\n", i, k);
//求两个数的最大值
int a = 1;
int b = 2;
int max = 0;
max = maxnum(&a, &b);
printf("max = %d\n", max);
max = maxValue1(a, b);
printf("max = %d\n", max);
maxValue(a, b, &max);
printf("max = %d\n", max);
int array[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < sizeof(array) / sizeof(int ); i++) {
printf("%d\n", array[i]);
}
//随机给数组的每个元素赋值
int arr1[5] = {0};
arr(arr1, 5, 100, 50);
for (int i = 0; i < 5; i++) {
printf("%d ", arr1[i]);
}printf("\n");
*/
//结构体
struct student {
char name[50];
char gender;
int age;
};
typedef struct student Student;
//结构体变量
Student stu = {"wangmazi", 'M', 20};
printf("%s\n", stu.name);
printf("%c\n", stu.gender);
printf("%d\n", stu.age);
//结构体指针
Student *p = NULL;
//指向了结构体第一个成员变量的首地址
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 m = {3.0, 4.0};
cpoint n = {6.0, 8.0};
cpoint *p1 = &m;
cpoint *p2 = &n;
//sqrt : 开方函数
//powf : 幂函数
float distance = ((p1->x) - (p2 ->x)) * ((p1->x) - (p2 ->x)) + ((p1 ->y) - (p2 ->y)) * ((p1 ->y) - (p2 ->y));
float distance1 = sqrtf(distance);
printf("%.2f\n", distance1);
//5 = sqrt(powf(3, 2) + powf(4, 2));
distance = distanceWithTwoPoint(&m, &n);
printf("%.3f\n", distance);
Student stu1 = {"smd sfag dsfasfs sfs afsa", '?', 123};
//去除name中的' '字符;
// Student *p6 = &stu1;
// int i = 0;
// while(p6 ->name[i]) != '\0') {
// if (p6 ->name[i]) == ' ') {
// p6 ->name[i] = '_'
// }
// i++;
// }
// printf("%s", p6 ->name);
//
//变为Lan_ou
stu1.name[0] = 'L';
stu1.name[3] = '_';
printf("%s\n", stu1.name);
// p3 -> name[0] = 'L';
// p3 -> name[3] = '_';
printf("%s\n", stu1.name);
//把'?'改为'F', 把年龄改为18;
Student *p4 = &stu1;
p4 -> gender = 'F';
p4 -> age = 18;
printf("性别:%c, 年龄%d\n", p4 -> gender, p4 -> age);
//去除空格
// char string[] = "smd sfag dsfasfs sfs afsa";
// //int i = 0;
// while (string[i] != '\0') {
// //printf("%c", string[i]);
// if (string[i] == ' ') {
// string[i] = '_';
// }else
// i++;
//
// }
// printf("%s\n", string);
// int a[3] = {1, 2, 3};
Student students[3] = {
{"zhangsan", 'f', 18},
{"lisi", 'm', 20},
{"wanger", '?', 25}
};
//遍历数组中的中的每个元素,并输出姓名
// students[0].name[0] = 'Z';
// students[1].name[0] = 'L';
// students[2].name[0] = 'W';
// for (int i = 0; i < 3; i++) {
// students[i].name[0] = students[i].name[0] - 32;
// }
// for (int i = 0; i < 3; i++) {
// printf("%s\n", students[i].name);
// }
// for (int i = 0; i < 3; i++) {
// students[i].age += 10;
// if (students[i].age > 30) {
// students[i].age = 30;
// }
// }
// for (int i = 0; i < 3; i++) {
// printf("%d\n", students[i].age);
// }
Student *p7 = students;
// (*p7).name;
// (*(p7 + 1)).name;
// (*(p7 + 2)).name;
for (int i = 0; i < 3; i++) {
(p7 + i) ->name[0] -= 32;
}
for (int i = 0; i < 3; i++) {
printf("%s\n", (p7 + i) ->name);
}
for (int i = 0; i < 3; i++) {
(p7 + i) ->age += 10;
if ((p7 + i) ->age > 30) {
(p7 + i) ->age = 30;
}
}
for (int i = 0; i < 3; i++) {
printf("%d\n", (p7 + i) ->age);
}
char string[] = "IOS";
char *p8 = NULL;
//指针指向了字符串的首地址
p8 = "asd";
//array[i] = *(array + i)
char str1[] = "abc";
char str2[] = "123";
char str3[] = "bpf";
//字符指针数组
char *array[3] = {str1, str2, str3};
// array[0][1]
// *(array[0] + 1)
// *(*array + 1)
char *strings[3] = {"abc", "123", "bpf"};
//字符转数组
char strs[3][100] = {"abc", "123", "bpf"};
// strs[0][1]
// *(*strs + 1)
return 0;
}