欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

指针小知识

程序员文章站 2022-03-11 22:31:42
...

1.带有*的变量类型的标准写法,变量类型* 变量名。
2.任何类型都可以带上*,加上*以后是新的类型。
3.*可以是任意多个。
4.不管原来什么类型,只要带*,不管几个*,就是指针,通用占用4个字节。
5.指针赋值必须前后一样,“完整写法”int* x = (int *)6。   
6.带*类型的变量可以加、减一个整数,但是不能乘或者除。
7.带*类型变量与其他整数相加或者相减时:
    带*类型变量 + N = 带*类型变量+ N*(去掉一个*后类型的宽度)。
    带*类型变量 - N = 带*类型变量- N*(去掉一个*后类型的宽度)。
8.两个类型相同的带*类型的变量可以进行减法操作。
9.相减的结果要除以去电一个*的数据宽度。
10.带*的变量,如果类型相同,可以做大小的比较。
11.&可以对任意变量使用,使用后,类型变为:*+原变量。
12.*只能用在原来就带有*的变量。
13.指针定义的字符串保存在常量区,不能修改!!想修改必须定义数组。
    错误:char *p = "abc",尝试修改字符串的值。
    正确:char p[] = "abc",可以使用指针任意修改,因为保存在栈。
14.指针函数:就是一个函数,只是返回值是指针。
15.指针数组:就是一个数组,只不过里面存的都是指针。
16.结构体指针:
17:*p == *(p+0) == p[0] == *(p+i) == p[i];
18.在编译器眼中,指针可以用*取值,也可以用[]来取值。
19.*(p+i) =  p[i];
    *(*(p+i)+k) = p[i][k];
    *(*(*(p+i)+k)+m) = p[i][k][m];
    *(*(*(*(p+i)+k)+m)+t) = p[i][k][m][t];
    *()可以与[]相互转换。

int *ptr = NULL;
ptr = (int *)malloc(sizeof(int)*128);
if(ptr != NULL)memset(ptr,0,sizeof(int)*128);
*ptr = 1;
free(ptr);
ptr = NULL;

 

相关标签: 指针