6.C语言 指针
2019-07-12 本文已影响0人
爱吃馒头的二饼
格式: 变量类型 *变量名
前面的变量类型代表指针变量只能指向该类型的数据
指针的作用:根据一个地址值,访问对应的存储空间
无论什么类型的指针都占用4个字节的存储空间,指针之所以需要变量类型就是为了在取值和赋值时知道该取值/赋值多少个字节的空间
int *p;
int a = 90;
//指针变量p指向了变量a
p = &a;
//把10赋值给p指向的内存空间
*p = 10;
int p;的仅仅只是一个象征,没有其他特殊含义;而p = 10中的作用是访问指针变量p指向的内存空间
指针变量只能存储地址
使用指针更改函数外部的变量的值
#include <stdio.h>
void changeNum(int *n);
int main()
{
int a = 10;
changeNum(&a);
printf("%d\n",a);
return 0;
}
void changeNum(int *n)
{
*n = 100;
}
指向指针的指针
#include <stdio.h>
int main()
{
int a = 10;
int *p = &a;
int **pp = &p;
**pp = 20;
printf("%d\n",a);
return 0;
}
数组元素的访问方式
int ages[5];
int *p;
p = ages;
-
数组名[下标] ages[i]
-
指针变量名[下标] p[i] 因为数组名就是该数组的首地址,也是数组第一个元素的地址3> *(p + i)
指针和数组的关系:http://blog.chinaunix.net/uid-21411227-id-1826897.html
指针变量的+1究竟加多少,取决于指针的类型
指针与字符串
定义字符串的两种方式。
//字符串变量,里面的字符可以被修改
char name[] = "hansion";
//字符串常量,里面的字符不可被修改
char *name2 = "hansion";
指针变量指向字符串的首字符
指向函数的指针
使用指针间接调用函数
#include <stdio.h>
void test(int a)
{
printf("调用了test函数,参数为:%d\n",a);
}
int main()
{
void (*p)(int);
p = test;
p(100);
(*p)(200);
return 0;
}