指针
来源:互联网 发布:编程语言的都有啥 编辑:程序博客网 时间:2024/05/18 19:39
//
// main.m
// LessonPoint
//
// Created by lanouhn on 14-7-26.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
//定义一个整型变量
// int a = 10;
// //定义一个指针变量, 和定义整型变量类似,也包含三部分, 数据类型 变量名 =初值, 只不过指针变量用来存储地址而已
// //int *指针变量类型, p指针变量名, NULL指针变量初值
// //int 的作用, 1 当自增时增加几个字节, 2 当存取数据时一次性读取几个字节
// //定义时, *告诉编译器,后面的变量是一个指针变量, 用来存地址
// int *p = NULL;
// //指向关系
// p = &a;//将a的地址赋值给p
// printf("a = %d\n", a);//直接访问内存单元数据
// //*p 此时的作用是根据指针变量存储的地址,找到对应的内存单元, 将内存单元上的数据读取出来
// printf("*p = %d\n", *p);//间接访问内存单元数据
// //对于指针变量类型, 所规定的存储空间的大小只和操作系统的位数有关, 32位的操作系统式4个字节, 64位操作系统是8个字节
// printf("%lu\n", sizeof(long *));
// *p = 20;
// printf("*p = %d\n", *p);
// printf("a = %d\n", a);
// int b = 30;
// int *p1 = &b;
// printf("b = %d *p1 = %d\n", b, *p1);
// *p1 = 40;
// printf("b = %d *p1 = %d\n", b, *p1);
// char c = 'c';
// char *p2 = &c;
// printf("c = %c *p2 = %c\n", c, *p2);
// *p2 = 'd';
// printf("c = %c *p2 = %c\n", c, *p2);
// int d = 40;
// int *p3 = NULL;
// //当对p3指向一个空间进行操作时, p3必须指向一个有效的空间(明确的空间)
// *p3 = 50;//会crash 解决方案:将p3指向有效的地址空间(p3 = &d)
//指针变量的重新赋值,叫做指针重指向, 就看最后一次的指向即可
int a = 10;
int *p = &a;
printf("a = %d *p = %d \n", a, *p);
int e = 30;
p = &e;
printf("a = %d e = %d *p = %d\n",a, e, *p);
return 0;
}