指针 内存指针 指向一个变量或者函数
变量也可以是整形,也可以是字符串也可以是数组
整形的指针声明时必须也是用int声明,指向什么类型的变量,就声明成什么类型的指针。
用&可以取一个变量的指针
例子:
[root@CWG hc]# cat zz1.c
#include <stdio.h>
main()
{
int a = 5;
int *p; //声明一个指向int类型变量的指针p
p = &a; //p是指向a的指针 &a取a变量的内存地址 赋给p
fprintf(stdout, "a = %d\n*p = %p\n", *p, p); //由于p是指向int a的指针,所以取p地址的值,打印出来的结果应该是int a, %p是打印内存指针,打印出p的值也就是一个内存地址
}
[root@CWG hc]# ./zz1
a = 5 //打印出来的是int a的值
*p = 0x7fffab01ad24 //这个内存地址是指向int a变量的一个内存地址
用*可以取出指针指向的变量
例子:
[root@CWG hc]# cat zz1.c
#include <stdio.h>
main()
{
int a = 5;
int *p;
p = &a; //p指向int a的值 此处的p指向5
int c; //声明一个整形c变量
c = *p + 10; //用*取p指针的值,然后再加10后 将结果赋值给int c
fprintf(stdout, "c = %d\n", c);
}
[root@CWG hc]# ./zz1
c = 15
********************************************************
注意:void类型的指针可以存放指向任何类型的指针
********************************************************
++*ip 等价于 (*ip)++
赋值:指针等于指针
例子:
[root@CWG hc]# cat zz1.c
#include <stdio.h>
main()
{
int a = 5;
int b = 7;
int *p;
int *x;
p = &a; //p等于a的指针 指向int a的值
x = &b; //x等于b的指针 执行int b的值
fprintf(stdout,"*p = %d || p = %p\n", *p, p);
fprintf(stdout,"*x = %d || x = %p\n", *x, x);
p = x; //将指针x的指向赋值给指针p
printf("P = X\n");
fprintf(stdout,"*p = %d || p = %p\n", *p, p);
fprintf(stdout,"*x = %d || x = %p\n", *x, x);
}
[root@CWG hc]# ./zz1
*p = 5 || p = 0x7fffb2e7d7fc
*x = 7 || x = 0x7fffb2e7d7f8
P = X //可见当p=x执行后输出的值如下
*p = 7 || p = 0x7fffb2e7d7f8 //p的指针等于了x,值随即也等于了x,x是指向int b的指针,那么p的指针等于x的指针了,则p指针执行的值也是x了
*x = 7 || x = 0x7fffb2e7d7f8
将a指针的值付给b指针
例子:
[root@CWG hc]# cat zz1.c
#include <stdio.h>
main()
{
int a = 5;
int b = 7;
int *p;
int *x;
p = &a; //p等于a的指针 指向int a的值
x = &b; //x等于b的指针 执行int b的值
fprintf(stdout,"*p = %d || p = %p\n", *p, p);
fprintf(stdout,"*x = %d || x = %p\n", *x, x);
*p = *x; //将指针x的值赋给指针p
printf("*P = *X\n");
fprintf(stdout,"*p = %d || p = %p\n", *p, p);
fprintf(stdout,"*x = %d || x = %p\n", *x, x);
}
[root@CWG hc]# ./zz1
*p = 5 || p = 0x7fffa8996cac
*x = 7 || x = 0x7fffa8996ca8
*P = *X //可见先用*取出x的值赋值给*p,则效果如下所示 地址指向没变,只是值变了
*p = 7 || p = 0x7fffa8996cac
*x = 7 || x = 0x7fffa8996ca8
############################################
迷途小运维学习C程序语言随笔
作者:john
转载请注明出处