黑马程序员_C学习笔记之指针
1>定义:通俗来讲,指针就是拿来存储地址的,存储的地址是谁的,此时指针就指向谁.
2.例如: int a = 10; int *p = &a; 此时p里面存储的是变量a的地址,就可以说指针p指向了a所在的存储空间, *p=20; 这里的*号代表访问p所指向的存储空间,并且修改里面的值为20
3.上面的例子中int *p =&a;只是代表p是个指针变量,*号是指针的标志,而下面的*号是访问所指向的存储空间,两者含义不一样
4.错误写法:int *p; *p=20;这种做法是错误的,因为此时p并没有给它赋地址,所以它此时是乱指的,不能随意改值
5.指针与数组:
1>指针可以指向数组,也可以指向数组元素,数组名就是数组的地址,也是数组首元素的地址
2>用指针遍历数组元素
int a[3] = {1,2,3};
int *p = a;
for(int i=0; i<3;i++)
{
printf("%d\n",*(p+i));
}
此时p的值并没有改变,也可以使用p++,如果使用p++则指针的地址会改变,这里的p+1代表指向下一个元素,并不是单纯的加1,具体加多少跟指针的类型有关,因为不同数据类型所占的字节数是不一样的
6.字符串:遍历字符串
char *s = "i love oc"; 这时定义的字符串是常量
for(;*s;s++)
{
printf("%c",*s);
}
7.指针与函数:
1>返回指针的函数: 类型说明符 *函数名(参数列表)
2>指向函数的指针: 函数返回值类型 (*p)(参数列表)
int sum(int a,int b)
{
return a+b;
}
int (*p)(int,int) = sum;
此时指针p指向了函数,函数名就是函数地址
3>调用函数:sum(2,4); p(2,4); (*p)(2,4);三种方式都可以调用sum函数
4>可以利用指针把函数作为参数来传递
浙公网安备 33010602011771号