01-指针介绍
要研究指针首先我们要知道什么是内存。
内存:存在内存里的
内存分了N多个小空间,每个小空间1个字节
每个小空间有它自己的地址。每个地址之间差1
int类型占用4个字节,等于占了4个空间(有4个地址),不需要记住4个地址,而记住首地址就行了(因为首地址相当于入口或者生活中的门)
指针到底是什么了?
指针就是地址,地址就是指针。
存放地址的变量就叫 指针变量
定义指针变量的语法:
类型 *指针变量名;
赋值:
指针变量名 = 地址;
在声明的时候初始化
类型 *指针变量名 = 地址;
我们看几个指针变量
怎么样打印地址值?
%d:int类型
%f:float类型
%c:char类型
%p:指针类型,也就是打印地址
int *p;
int* p;
int * p;
以上三种都可以,*代表这是一个特殊类型
int* 构成了类型
例:int* p; 变量名是p int*是类型:这个类型代表指向int的指针类型
char *pCh;变量名是pCh char *是类型:这个类型代表指向char类型的指针类型
float*
double *
long *
注意:给指针变量赋值的时候,不要忘记加&
02 - 指针变量的使用
使用指针变量
语法:
*指针变量名;
语义:这就可以访问你所指向的那块空间里的值了
千万要注意:
访问指针变量时加星号和不加星号的区别:
int num;
int *p = #
1.加星号代表,是访问它所指向的空间里面的值(访问别人的妹子) *p 相当于 num;
2.不加星号代表,是访问它自己的空间里面的值(访问自己的黄脸婆)p 就是自己里面存的值
03 - 指针为什么要区分类型
指针为什么要区分类型?(理解)
为了告诉指针,该去读取几个字节
只要记住一句话:什么样的变量就应该用什么样的指针去读取,否则会出异常
04 -指针的练习
练习一
Int main () {
int num1=10,num2=20;
int *p1 = &num1;
int *p2 = &num2;
int sum = *p1 + *p2; //相当于num1 相当于num2
printf("sum=%d\n",sum);
printf("%d\n",*p1);
printf("%p\n",p1);
}
练习二
//函数交换两个变量的值
void change(int *num1,int *num2){
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
int main(int argc, const char * argv[]) {
int num1 = 10,num2=20;
change(&num1,&num2);
printf("num1=%d num2=%d\n",num1,num2);//20 10
}
要研究指针首先我们要知道什么是内存。
内存:存在内存里的
内存分了N多个小空间,每个小空间1个字节
每个小空间有它自己的地址。每个地址之间差1
int类型占用4个字节,等于占了4个空间(有4个地址),不需要记住4个地址,而记住首地址就行了(因为首地址相当于入口或者生活中的门)
指针到底是什么了?
指针就是地址,地址就是指针。
存放地址的变量就叫 指针变量
定义指针变量的语法:
类型 *指针变量名;
赋值:
指针变量名 = 地址;
在声明的时候初始化
类型 *指针变量名 = 地址;
我们看几个指针变量
怎么样打印地址值?
%d:int类型
%f:float类型
%c:char类型
%p:指针类型,也就是打印地址
int *p;
int* p;
int * p;
以上三种都可以,*代表这是一个特殊类型
int* 构成了类型
例:int* p; 变量名是p int*是类型:这个类型代表指向int的指针类型
char *pCh;变量名是pCh char *是类型:这个类型代表指向char类型的指针类型
float*
double *
long *
注意:给指针变量赋值的时候,不要忘记加&
02 - 指针变量的使用
使用指针变量
语法:
*指针变量名;
语义:这就可以访问你所指向的那块空间里的值了
千万要注意:
访问指针变量时加星号和不加星号的区别:
int num;
int *p = #
1.加星号代表,是访问它所指向的空间里面的值(访问别人的妹子) *p 相当于 num;
2.不加星号代表,是访问它自己的空间里面的值(访问自己的黄脸婆)p 就是自己里面存的值
03 - 指针为什么要区分类型
指针为什么要区分类型?(理解)
为了告诉指针,该去读取几个字节
只要记住一句话:什么样的变量就应该用什么样的指针去读取,否则会出异常
04 -指针的练习
练习一
Int main () {
int num1=10,num2=20;
int *p1 = &num1;
int *p2 = &num2;
int sum = *p1 + *p2; //相当于num1 相当于num2
printf("sum=%d\n",sum);
printf("%d\n",*p1);
printf("%p\n",p1);
}
练习二
//函数交换两个变量的值
void change(int *num1,int *num2){
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
int main(int argc, const char * argv[]) {
int num1 = 10,num2=20;
change(&num1,&num2);
printf("num1=%d num2=%d\n",num1,num2);//20 10
}

被折叠的 条评论
为什么被折叠?



