黑马程序员_iso入门基础学习_C语言day5

时间:2023-02-19 16:17:53

---------------------- IOS培训.期待与您交流! ----------------------


指针:用来存放地址 



int *p; //定义了一个指针变量p  (只能存储int类型的数据的地址)


p=&a; //将a的内存地址赋值给p


*p=10  //根据指针p存储的内存地址,访问数据,赋值为10。相当于a=10。


int *p=&a    OK  (int *相当于指针p的类型)
*p=&a         NO


如果要指向指针:int **pp=&p;
类型+‘*’指针变量名   


一个函数多个返回值可以用指针来实现


指针变量在64位编译下都占8个字节


为什么指针要分类型:用于取值和赋值
如果是int类型的,则从地址开始取4个字节
如果是char类型。则从地址开始取1个字节




指针和数组的关系:
指针指向数组第一个元素地址
指针变量+1,相当于指向数组的下一个元素
指针变量的值+多少,取决于指针类型,int类型+4
double类型+8,char类型+1.


也可以通过指针名[下标]来访问数组元素,前提是
指针名=数组名,为什么可以这样?


因为数组名存储的是数组首元素的地址


指针和字符串:
1.用char数组来定义一个字符串
char ch[]="abc"     是字符串变量
使用场景:字符串需要修改
2.用指针来定义一个字符串
char *ch="abc"      是字符串常量
使用场景:字符串不需要修改,且经常要使用
字符串常量存储在内存的常量区,并且同一个字符串常量只有一个,如果还有另一个指针定义了相同的字符串,则,这两个指针是指向同一个字符串的首字符的地址。


字符串数组指针数组:
char *ch[]={"as","df","ss"}


字符串输入:   scanf("%s",字符数组名)




返回指针的函数:最常用的就是返回一个字符串


char * test()
{
return "abc";
}


指向函数的指针:
1.怎么定义一个指向函数的指针:
语法:  返回值类型(*指针名)(形参);
2.怎么指向函数:
指针名=函数名   函数名就代表该函数在内存中的地址,函数的地址赋值给指针。
3.怎么调用函数:
1.直接调用:函数名(实参)
2.指针调用:(*指针名)(实参)
3.指针调用:指针名(实参)