C语言指针
热门
{可以使用*(间接访问运算符)来访问指针所指向的变量
int a=100,b; int *p = &a;
b = *p; //将p指向的a变量的值赋给变量b,指针与一维数组,输出:字符串中o出现了4次,用指针指向数组,其实数组名存储的是整个数组的起始地址
int a[5]; int *p; p = a;
将数组的起始地址赋值给指针p,指针的使用,NULL表示空指针,其值
为0,#include
int main()
{
int num = 0;
char *str = "How do you do!";
for(;*str;str++)
{
if(*str == 'o')num++;
}
printf("字符串中o出现了%d次\n",num);
return 0;
},指针变量的定义,C语言指针初涉,引用数组元素的方式有三种:eg:
int a[5],int p; 访问数组的第3个元素
a[2] *(a+2) *(p + 2)
这三种方式是等价的 即:p+2 = &a[2],一个简单的问题:
你的一个朋友搬家了,你来到她住的那栋大厦,你怎么样才能够找到她呢?当然是知道房号啦!那么你怎么知道房号呢?,类型说明符号 *变量名
int *p :指向整型变量的指针变量
float *q:指向浮点型变量的指针变量,输出结果:
11,13
12,13,可以使用&取得变量的地址
int a; *p = &q;*q=p;
让p指向a后;又把地址赋值给q,所以p和q都指向同一变量a,她之前没和你说房号;
你就需要向楼道保安咨询她所在的房号了,直接访问,指针变量:用来存放另一个变量的内存地址,输出结果:
10,9,8,7,6,5,4,3,2,1,指针与字符串,
通过变量名或者地址直接访问变量,通过指针变量访问变量,指向数组元素,代码示例:将数组的第一个元素与最后一个元素调换位置,第二个与倒数第二个交换...,引用数组元素,间接访问,#include
int main()
{
int a = 10,b;
int *p,*q;
//取得a变量的地址赋值给p
p = &a;
b = *p + 3;
//如果p指向的内存中的数据 + 1,a会等于多少 ?
*p = *p + 1;
printf("%d,%d\n",a,b);
//我们把p的地址赋给q,然后对q+1,a会不会发生变化呢?
q = p;
*q = *q + 1;
printf("%d,%d\n",a,b);
return 0;
},指向数组,字符串的定义:除了之前学过的:char str[] = "Hello"外;现在我们可以使用另外一种方式定义一个字符数组:
char *str = "Hello"
①系统为"Hello"分配连续的内存空间
②将存储空间的首地址给指针str,用指针指向数组中的某个元素:
int a[4]; int *p; p = &a[3];
将数组中的第4个元素的地址赋值给p,她搬家前和你说了她的房号,那么你就可以直接去找她的房间了,
通过指针指向变量,先获得变量地址,然后根据地址去访问对应的存储单元
,#include
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int *p = a,*q = &a[9];
int i,num;
while(p <= q)
{
num = *q;
*q = *p;
*p = num;
//将指针p后移一个单位;
//将指针q前移一个单位
p++;q--;
}
printf("输出交换后的数组:\n");
for(i = 0;i < 10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
},指针变量的初始化与赋值}