数组,指针的熟悉,一些小心得

main()           //*&i其实与*P其实是同样结果,同时某些情况也就等于i.
{                   //&i=p,*P=i,*P表示&i所表示的数值
    long i;
    long *p;
    printf("please input the number:\n");
    scanf("%ld",&i);
    p=&i;
    printf("the result1 is:%ld\n",*&i);
    printf("the result2 is:%ld\n",i);
    printf("the result3 is:%ld\n",*p);
}

int i;int *P;p=&i,此时P前不要写*.或者int i;int *P=&i,同时定义和赋值要写*.*&优先级一样,从右像做.其实*P就是&上的那个数的内存位置吧

 //P指针位移1位,就等于&i地址位移一位,就是int i 的一个单位,4个字节.p++后面的比前面的大4个字节
void pc()
{
    int i;
    int *p;
    printf("please input the number:\n");
    scanf("%d",&i);
    p=&i;
    printf("the result1 is:%d\n",p);
    p++;
    printf("the result2 is:%d\n",p);

    return ;
}

//下面是二维数组简单点的如何输出二维排列方式,但是思维还是有点绕,不够清晰直接

int main()
{
    int a[3][5],i,j;
    printf("please input:\n");
    for (i=0; i<3; i++)
    {
        for (j=0; j<5; j++)
        {
            scanf("%d",a[i]+j);
        }
    }
    printf("the result is:\n");
    for (i=0; i<3; i++)
    {
        for (j=0; j<5;j++)
        {
            printf("%3d",*(a[i]+j));
        }
        printf("\n");
    }
    return 0;
}

char (*p)代表定义一个*P类型是char型, .....= (char *)p表示强势转换成字符型指针.字符型数组后面会默认多个\0会自动帮你太添加,而整形数组则需要"包含\0",才能相当于字符型数组,今天这章内容有点多,所以慢慢理解,至于作业暂时没有做,还在熟悉与理解

时间: 2025-01-12 13:47:13

数组,指针的熟悉,一些小心得的相关文章

1、打印二进制机器码,程序内存分析,大端序小端序,指针数组,数组指针,数组的三种访问方式,typedef,#if-0-#endif,求数组大小,括号表达式

 1.打印二进制机器码(分别表示32位的和64位的) #include <stdio.h> /*按照8位的长度打印一个数值*/ void dis8bit(char val) { int bit = 8; while(bit--) { if(1<<bit&val){ printf("1"); } else { printf("0"); } if(!(bit%4)) printf(" "); } putchar(1

小实验点破数组指针、函数指针

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/45823027 c语言里的指针函数.函数指针.指针数组都用得比较多,数组指针相对在项目中比较少见. #include <stdio.h> #include <stdlib.h> int main() { char (*a)[5]; char b[8]={'0','1','2','3','4','5','6','7','8','9'}; a

学习KMP算法的一点小心得

KMP算法应用于 在一篇有n个字母的文档中 查找某个想要查找的长度为m的单词:暴力枚举:从文档的前m个字母和单词对比,然后是第2到m+1个,然后是第3到m+2个:这样算法复杂度最坏就达到了O(m*n),对于大数据肯定不行.KMP算法的精髓即设法减少不必要的枚举次数,举个例子:比如已经匹配好了单词的前k-1个字母:但第k个字母无法匹配了:那么如果前k-1个字母中存在类似回文的情况(前i个字母组成的子串和后i个字母组成的子串相同),那么指针j就变成i(相当于整体往右移动),这样来达到减少枚举次数的目

指针数组和数组指针的区别

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组. p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++;       //该语句执行过后,也就是p=p+

(转)数组指针和指针数组的区别

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组. p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++;       //该语句执行过后,也就是p=p+

数组指针和指针数组的区别(转)

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组. p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++;       //该语句执行过后,也就是p=p+

C++ delete []p 数组指针,如何知道该数组大小的

本来只是一时兴起,想动手整整大学学的很渣的C++,可是一段小小的代码缺牵扯出一堆问题来,好有趣. 来看一段代码: void main() { char p[6]; char *buf = new char[4]; strcpy(buf,"012356789");//这里越界不会报错 strcpy(p,"Hello"); //若此处越界立即报错 cout<<p<<endl; cout<<buf<<endl; delete

C-函数,数组指针,指针之间的运算

goto原理: 当执行到goto语句的时候, cpu就会跳转到当前函数指定的标志的地方 使用goto也可以实现循环操作 但是在使用的时候,要注意不要造成死循环 一般情况下不建议经常使用goto语句,因为不安全——容易造成死循环 除非在特别确定不会有死循环的情况下,才可以用goto goto不仅可以往前跳,还可以往后跳 使用goto时, 标签代码行的下一行代码不能是声明变量,如果非要写在这个地方,那就在声明变量行前面加一句无意义的代码 标示符:  通俗来讲就是程序员可以自己命名的东西: 变量名,g

指针数组以及数组指针

首先用几个表达式直观的感受一下什么是指针数组以及数组指针.     一.表达式     int *p[10];//指针数组     int (*p)[10]//数组指针 有了直观的感受那么我们具体分析,指针数组以及数组指针是怎么定义的.       1).指针数组:实质是数组,数组中存放的元素是指针.       2).数组指针:实质是指针,指针变量中存放的是数组首元素的地址.     二.分析小程序理解数组指针     int main()     {      char a[5] = { '