ios开发-c语言之指针的学习
2015-03-12 09:57
316 查看
上一节,我学习了字符串,今天学习指针,这个C语言中精华的部分,MJ老师说指针很重要,所以一些基础的东西要弄清楚:
1.什么是指针:指针就是内存数据存储的地址
2.问什么要定义指针变量:
通过函数调用并不能直接操作main函数的变量值,通过将变量的存储地址传出来,再其地址上直接修改,这样就修改了自定义的变量,由此引出了指针.
3.指针的格式:
指针定义类型 *指针变量名
如:int *p, char *c
4.指针的两种赋值方式:
1)int a = 10;
int *p;
p = &a;
*p = 20;//p指的是p所指向的内存空间a
printf("%d", *p);
2)int a = 10;
int *p = &a;
*p = 20;
5.清空指针的两种方式:
p = 0;
p = NULL;
清空指针后,不能再间接访问其他存储空间
6.指针的内存大小:
都是8个字节.
7.注意点:
1)指针变量智能指向地址
2)指针只能指向同样类型的数据,如int *p只能指向int类型的数据地址
3)指针变量未经过初始化,不要拿来间接访问其他存储空间
8.指向指针的指针:(作为了解)
格式如下
int a = 10;
int *p = &a;
int **pp = &p;
9.下面从我编写的程序中慢慢体会指针这个新名词:
#include <stdio.h>
/*void change(int *n);//函数声明
int main()
{
int a = 10;//定义int类型变量a
change(&a);
printf("a=%d", a);//打印结果为100
return 0;
}
void change(int *n)//形参类型为指针,智能传递地址
{
*n = 100;
}*/
//练习:在不利用第三方变量的情况下,交换两个数的值;
/*
void change(int *num1, int *num2);
int main()
{
int a = 10;
int b = 11;
change(&a, &b);//调用函数change
printf("a=%d, b=%d\n", a, b);
return 0;
}
void change(int *num1, int *num2)
{
int temp = *num1;//注意定义的时temp,不是*temp
*num1 = * num2;
*num2 = temp;
}*/
10.下面是我写的一道习题:
![](https://img-blog.csdn.net/20150312100133304?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW51b2RleGlhb2Rp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
总结:
学习指针首先要弄清楚什么是指针,然后根据定义指针的格式,利用指针的特性进行运用,细细品味着其中的原理.
1.什么是指针:指针就是内存数据存储的地址
2.问什么要定义指针变量:
通过函数调用并不能直接操作main函数的变量值,通过将变量的存储地址传出来,再其地址上直接修改,这样就修改了自定义的变量,由此引出了指针.
3.指针的格式:
指针定义类型 *指针变量名
如:int *p, char *c
4.指针的两种赋值方式:
1)int a = 10;
int *p;
p = &a;
*p = 20;//p指的是p所指向的内存空间a
printf("%d", *p);
2)int a = 10;
int *p = &a;
*p = 20;
5.清空指针的两种方式:
p = 0;
p = NULL;
清空指针后,不能再间接访问其他存储空间
6.指针的内存大小:
都是8个字节.
7.注意点:
1)指针变量智能指向地址
2)指针只能指向同样类型的数据,如int *p只能指向int类型的数据地址
3)指针变量未经过初始化,不要拿来间接访问其他存储空间
8.指向指针的指针:(作为了解)
格式如下
int a = 10;
int *p = &a;
int **pp = &p;
9.下面从我编写的程序中慢慢体会指针这个新名词:
#include <stdio.h>
/*void change(int *n);//函数声明
int main()
{
int a = 10;//定义int类型变量a
change(&a);
printf("a=%d", a);//打印结果为100
return 0;
}
void change(int *n)//形参类型为指针,智能传递地址
{
*n = 100;
}*/
//练习:在不利用第三方变量的情况下,交换两个数的值;
/*
void change(int *num1, int *num2);
int main()
{
int a = 10;
int b = 11;
change(&a, &b);//调用函数change
printf("a=%d, b=%d\n", a, b);
return 0;
}
void change(int *num1, int *num2)
{
int temp = *num1;//注意定义的时temp,不是*temp
*num1 = * num2;
*num2 = temp;
}*/
10.下面是我写的一道习题:
总结:
学习指针首先要弄清楚什么是指针,然后根据定义指针的格式,利用指针的特性进行运用,细细品味着其中的原理.
相关文章推荐
- iOS开发学习之C语言---C10 函数指针-1
- iOS开发学习笔记 2-9 C语言部分 内存分配函数 函数指针 指针函数 void*
- iOS开发学习笔记 2-4 C语言部分 指针
- iOS开发学习之C语言---C07 指针-2
- iOS开发学习之C语言---C08 高级指针-12
- iOS开发学习之C语言---C10 函数指针-2
- iOS开发学习笔记 2-4 C语言部分 指针
- iOS开发学习之C语言---C10 函数指针-3
- iOS开发学习之C语言---C08 高级指针-1
- ios开发-c语言之指针和数组以及指针和字符串的学习
- iOS开发学习笔记 2-9 C语言部分 内存分配函数 函数指针 指针函数 void*
- iOS开发学习之C语言---C07 指针-1
- iOS开发学习笔记 2-5 C语言部分 数组
- 【零基础学习iOS开发】【02-C语言】09-流程控制
- IOS开发学习基础--------C语言(六)
- iOS开发学习笔记 2-2 C语言部分 类型、运算符与表达式
- 非零基础学习iOS开发1-C语言
- iOS开发学习笔记 2-7 C语言部分 字符串
- IOS开发系列--C语言之指针
- iOS开发学习笔记 2-1 C语言部分 初识C语言