2013-07-13 C_Language 指针

数组   存放一连串类型相同的数据,在c语言中必须声明数组的长度

数组名 可以表示数组首地址,数组的首个元素,整个数组。
 

一维数组 
定义:  类型说明符  数组名 [常量表达式]
引用:数组名[下标]
初始化:类型说明符  数组名[常量表达式]={值,
值, 值, 值...... };
 
二维数组
定义:类型说明符 数组名[常量表达式一][常量表达式二];   在c语言中二维数组使按行排列的
引用:数组名[下标][下标];
初始化:


指针:是一个地址,在OC中执政都占8字节,在c语言中是不定的
指针变量 :是存放地址的变量,是专门用来存放地址的
变量的指针就是变量的地址
存放变量地址的变量是指针变量

指针定义:基类型 * 指针变量名;



下面两个语句的作用相同
1)i = 6;
2)*i _pointer = 6; //将6赋给指针变量i_pointer,指针变量名是i_pointer 而不是*i_pointer;

指针的运算符:
1)&:取地址运算
2)*:取指针所指向的内容

指针变量与普通变量的区别
普通变量只能存取数据,指针变量有存取数据和对所指向的内存空间进行操作两个功能;


易错点
int a = 100;
int b = 10;
int * pointer_1;//定义指向整型变量的指针变量(int *)pointer_1
int * pointer_2;

pointer_1 = &a;//将a的地址赋值给指针变量pointer_1
pointer_2 = &b;

NSLog(@"a = %d,b = %d",a,b);
NSLog(@"*ponter_1 = %d,*pointer_2 = %d");//*pointer_1,*pointer_2 就是变量a和b本身,即指向a和b的内容100,10
int i,j;
int * pointer_1;//(int *)pointer_1 基类型int指明该指针类型是指向int类型的
int * ponter_2; 



指针数组(实质是数组,里面存放着指针变量,该指针指向数组元素的地址)
(1)int a[10];//定义a为包含10个整型数据的数组
(2)int * p;//定义指向整型变量的指针p
(3)p = &a[0];//指针赋值,将a[0]元素的地址赋给指针变量p,这样p就指向了a数组的第0号元素
     (2)和(3)两句等价于 int * p  = &a[0];

注意:
1)p+i和a+i就是a[i]的地址,即它指向a数组的第i个元素。
2)*(p+5)、*a(a+5)和a[5]三者是等价的,例如,计算a[3]的地址,假设数组是float型的,数组a的首地址为1000,则a[3]的地址:1000+3*4=1012;
3)指针数组的指针变量也可以带下标,如p[i]与*(p+i)等价;
4)*(p++)和
*(++p)作用不同。前者是先取*p的值,然后使p的值加1,后者是先使p加1,在取*p。若p的初值为a(即&a[0]),则*(p++)为a[0],而*(++p)为a[1];


引用一个数组元素有两种方法
1)下标法:a[i];
2)指针法  *(a+i)或者*(p+i)


面试点
区别指针常量和常量指针
 int const *p;      
const int *p; 
 int * const p;
三个哪些使指针常量,哪些使常量指针
小妙招: 以*为界画一条竖线,const在*右边的为常量指针,const在*右边的是指针常量。

 


数组指针(实质是指针,) 

常量指针:是指针,指向的内容不可变,但是其指向可变 int const *p; (const int *p;)
指针常量 :是常量,实质上就是指针的指向不能改变,但是指向的里面的内容使可变的。
函数指针:
指针的指针:指针的指针指向指针变量的地址 ;
字符串指针: 



结构体
定义 : struct 结构体名{成员列表}; 

 结构体变量:
例如
方式一:
先定义结构,在说明结构体变量

 struct student

    {

        int num;

        char name[20];

        char sex;

    };

    struct student boy1,boy2;//声明两个结构体变量boy1,boy2

方式二:使用宏定义使一个符号常量来表示一个结构类型

#define STU struct stu

STU

{

    int num;

    char name[20];

    char sex;

}

STU  boy1,boy2; // 声明两个 boy1,boy2 STU 结构类型

方式三:在定义结构类型的同事说明结构变量

struct student

{

    int num;

    char name[20];

    char sex;

}boy1,boy2;    

方式四:直接说明结构变量

struct

{

    int num;

    char name[20];

    char sex;

}boy1,boy2;

结构变量成员的表示方法:结构变量名.成员名  boy1.num;boy.sex;

结构变量赋值:boy1.num = 102;boy1.name = "Elena";


结构变量的初始化:......}boy1,boy2={102,"Elena",'F'};


 

static关键字 
作用域-全局
生命周期:贯穿整个程序
static修饰的变量只能被初始化一次


const关键字
用量修饰不允许被改变的变量。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值