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

ios开发之c语言基础-指针

2015-10-20 19:54 351 查看
//

// main.m

// C8-指针

//

// Created by dllo on 15/10/15.

// Copyright (c) 2015年 dllo. All rights reserved.

//

#import <Foundation/Foundation.h>

#import "student.h"

//指针作为数组参数

//void test(int *p)

//{

// printf("%d\n", *p);

// *p = 5;

//}

//冒泡排序指针实现

//void maopao(int *k, int count)

//{

// for (int i = 0; i< count - 1; i++) {

// for (int l = 0; l < count - 1 - i; l++) {

// if (*(k + l) > *(k + l + 1)) {

// int b = k[l];

// k[l] = *(k + l + 1);

// *(k + l + 1) = b;

// }

// }

// }

//}

//

int main(int argc,
const char * argv[]) {

//

//

// int a = 0;

// printf("%d\n",a);

// printf("%p\n",&a);

//

//定义一个指针类型的变量

//变量类型
变量名 初值

// int *p = NULL;

//指针基础使用最重要的两个符号: * &

// * -
取值运算符

//& -
取址运算符

// int a = 5;

//通过指针访问

//指针指向空间 -
本质就是指针的空间存了a的地址值

// p = &a;

//通过指针访问所指向空间中的元素值

// printf("%d", *p);

//练习

// float a = 4.5;

// float *b = NULL;

// b = &a;

// printf("%f ",*b);

//

////

// int a = 5;

// int b = 7;

// int *p1 = NULL;

// int *p2 = 0;

// p1 = &a;

// p2 = &b;

//

// int c = 0;

// int *temp = NULL;

// temp = &c;

// *temp = *p1;

// *p1 = *p2;

// *p2 = *temp;

//

// printf("%d %d",*p1,*p2);

// printf("%d %d",a , b);

//

// int a = 0;

// int b = 0;

// int c = 0;

// scanf("%d%d%d",&a, &b, &c);

// int *p1 = NULL;

// int *p2 = NULL;

// int *p3 = NULL;

// p1 = &a;

// p1 = &b;

// p1 = &c;

// int max = *p1 > *p2 ? * p1 : *p2;

// max = max > *p3 ? max : *p3;

//

// int a = 0;

// int b = a;

// printf("b1= %d",b);

// scanf("%d",&a);

// printf("b2= %d",b);

//

//

// int a = 0;

// int *p1 = NULL;

// p1 = &a;

// printf("p1= %d",*p1);

// scanf("%d",&a);

// printf("p2= %d",*p1);

//定义和使用在一起,int *p = &a;

//指针的加减就是位移

// int *p1 = NULL;

// char *p2 = NULL;

// printf("%ld\n",sizeof(p1));

// printf("%ld\n",sizeof(p2));

//指针是用来存地址的,为了保证能够存下最大的地址.系统有自己的位宽64位或者32位,硬件也有自己的位宽64位或者32位,指针的大小跟系统有关,跟硬件无关

//在同一个系统中,不同类型的指针占内存大小相同,64位下都占8个字节

//不同类型的指针的意义

//1 *p所见范围不同

//2,p++移动大小不同

// int a = 256;

// char *p = &a;

// p++;

// printf("%d\n",*p);

//指针和数组的关系

// int a[5] = {1, 2, 3, 4, 5};

// int *p = NULL;

//

//指针指向数组首地址

// p = a;

// p = &a[0];

//指向数组中的其他元素

// p++;

// printf("%d\n", *p);

//

// printf("%d\n",p[1]);

// printf("%d\n", *(p + 1));

// printf("%d\n",*(a + 1));

//

//

//记住2个本质,第一个语法糖(数组本不存在,a[4]实际上是一个首地址加上4个偏移量),c语言中所有的操作都是通过地址操作来实现的

//第二个
变量,是地址所指向的空间.

//数组名字是常量不可以改变

//练习通过指针对数组进行冒泡排序

// int a[5] = {54, 34, 65, 434, 67};

// int *p = a;

// for (int i = 0; i < 5 - 1; i++) {

// for (int j = 0; j < 5 - i - 1; j++) {

// if (*(a + j) > *(p + j + 1)) {

// int b =*(p + j);

// *(p + j)= *(p + 1 + j);

// *(p + 1 + j) = b;

// }

// }

// }

// for (int i =0; i < 5; i++) {

// printf("%d ",*(p + i) );

// }

//通过指针可以计算字符串的长度

//编程实现

// char b[6] = "yuhao";

// char *p1 = b;

// int count = 0;

//遇到'\0'退出循环

// while (*p1 != '\0') {

// count++;

//计数加1

// p1++;

//指针移动访问后一个元素

// }

// printf("%d ",count);

//

//

// int a = 6;

// test(&a);

// printf("%d",a);

// int a[5] = {1,34,55,64,432};

// maopao(a, 5);

// for (int i = 0 ; i < 5; i++) {

// printf("%d ",a[i]);

// }

//指针数组

// int * p[2000] = {NULL};

//

//昨天的限时代码

// student stu[6] = {

// {"yuhafo", "female", 22, 99},

// {"yuhfsao", "female", 22, 98},

// {"lijin", "man", 23, 94},

// {"wangqi", "man", 24, 93},

// {"sunyunpu", "man", 23, 99},

// {"zhouyou", "man", 34, 99}

// };

// pointstrarray(stu, 6);

// sortstrarray(stu, 6);

// pointstrarray(stu, 6);

// 1. (**)编写一个函数,交换2个浮点数。

//

// 1. (***)在主函数中输入6个字符串(二维数组),对他们按从小到大的顺序,然后输出这6个已经排好序的字符串。要求使用指针数组进行处理。

//

// 2. (****)面试题:

// 有一字符串中包含数字与字符,请编程去除数字

//

//

//

// float a = 5.8;

//

//

// float b = 8.0;

//

// change(&a, &b);

//

// char arr1[] = "yuhadjad2312jlsdhasdl";

//

//

// removenumber(arr1);

// char arr1[30] = "aaasfff";

// char arr2[10] = "afa";

// copystrcat(arr1, arr2);

//printf("%s",arr1);

// copystrcmp(arr1,arr2);

// copystrcpy(arr1, arr2, 30);

return 0;

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