您的位置:首页 > 编程语言 > C语言/C++

c语言(高级指针)

2015-01-23 21:51 274 查看
// 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: