c 指针 和 数组

    xiaoxiao2023-10-27  179

    #include<stdio.h> #include<stdlib.h> /** 指针 就是内存地址 内存地址 就是指针 指针就是地址,地址就是指针 地址就是内存单元的编号 指针变量是存放地址的变量 指针和指针变量是两个不同的概念 但是要注意 通常叙述会把指针变量简称为指针 实际含义不同 **/ /* 更换地址 值 方法: */ void sitch(int* a,int* b){ int temp; temp = *a; *a = *b; *b = temp; } main(){ //定义一个 int类型变量 i 并且赋值为10 int i = 10; //定义一个 int 类型的一级指针变量p int* p; //把 i对应的地址赋值给 p变量 p = &i; //指针取值:*p :把 p变量对应的地址的值取出来: printf("i = %#x\n",&i); //对应的地址 16进制输出 printf("p = %#x\n",p); i = 200; printf("p = %#x\n",p); // 对应的地址的值 printf("*p = %d\n",*p); // 对应的地址的值 //-----------**互换两个数字** ---------------- int a=100,b=200,temp =0; //普通方式 互换: temp = a; a = b; b = temp; printf("a=%d,b=%d\n",a,b); //更换地址 方法: sitch(&a,&b); printf("a=%d,b=%d\n",a,b); //-------------------**多级指针:**---------------------------- // 定义一个 int类型的变量i 赋值为100 int j = 100; //定义一个 int类型的一级指针变量 address1 并且把i的地址赋值给它 int* address1 = &j; //定义一个 int类型的二级指针 address2 并且把 address1 对应的 地址赋值给他 int** address2 = &address1; //定义一个三级指针 int*** address3 = &address2; //定义一个四级指针 int**** address4 = &address3; // address1=0x62fe28 // address2=0x62fe20 // address3=0x62fe18 // address4=0x62fe10 printf("address1=%#x\n",address1); printf("address2=%#x\n",address2); printf("address3=%#x\n",address3); printf("address4=%#x\n",address4); // address1=100 // address2=100 // address3=100 // address4=100 printf("address1=%d\n",*address1); printf("address2=%d\n",**address2); printf("address3=%d\n",***address3); printf("address4=%d\n\n",****address4); //--------------------数组------------------- /* 数组: 1,数组的取值 2,数组的取地址 3,数组是一块 连续的内存地址空间 4,数组的设计 5,数组的首元素和数组的地址是相同的 */ char cArray[] = {'H','E','L','L','O'}; int iArray[] = {5,4,3,2,1}; //取数组的值: H E 5 4 printf("cArray[0] = %c\n",cArray[0]); printf("cArray[1] = %c\n",cArray[1]); printf("iArray[0] = %d\n",iArray[0]); printf("iArray[1] = %d\n\n",iArray[1]); //取内存地址值: int 为4个字节 是一块连续的内存空间 // cArray[0]地址 = 6487520 // cArray[1]地址 = 6487524 // cArray[2]地址 = 6487528 // cArray[3]地址 = 6487532 printf("cArray[0]地址 = %#x\n",&cArray[0]); printf("cArray[1]地址 = %#x\n",&cArray[1]); printf("cArray[2]地址 = %#x\n",&cArray[2]); printf("iArray[0]地址 = %#x\n",&iArray[0]); printf("iArray[1]地址 = %#x\n",&iArray[1]); printf("iArray[2]地址 = %#x\n",&iArray[2]); printf("iArray[3]地址 = %#x\n\n",&iArray[3]); //用 指针取值: printf("iArray == %d\n",*iArray); printf("iArray[0]== %d\n",*iArray+0); //对应值 +1 printf("iArray[1]== %d\n",*iArray+1); //对应值 +1 printf("iArray[2]== %d\n",*iArray+2); //对应值 +1 printf("iArray[3]== %d\n",*iArray+3); //对应值 +1 printf("iArray[0]== %d\n",*(iArray+0)); printf("iArray[1]== %d\n",*(iArray+1)); printf("iArray[2]== %d\n",*(iArray+2)); printf("iArray[3]== %d\n",*(iArray+3)); //---------------用户输入一个数组 并打印出来:------------------------ printf("请输入数组的长度:\n") ; int length; scanf("%d",&length); printf("您输入的数组长度为:%d\n",length); //2,根据用户输入数组长度 创建数组 int hArray[length]; int k; for(k=0;k<length;k++){ printf("请输入hArray[%d]的值:\n",k); scanf("%d",&hArray[k]); } //打印数组 for(k=0;k<length;k++){ printf("hArray[k]=%d,",hArray[k]); } system("pause"); }
    最新回复(0)