指针数组与数组指针++--指针运算

#include<stdio.h>

#include<stdlib.h>

int main1()

{

  //定义一个未初始化的整形指针数组,指针数组每个元素存放的都是一个单独的指针

  int *p[5];

  //p的大小为20个字节;64位操作系统下是40字节,一个指针变量8个字节

  printf("%d\n",sizeof(p));

  //p1代表一个整形的指针变量,并且这个指针只能指向一个有10个元素的整形数组;

  int(*p1)[10];

  //p1大小为4个字节

  printf("%d\n",sizeof(p1));

}

int swap(int *a,int *b)

{

  *a=*a+*b;

  *b=*a-*b;

  *a=*a-*b;

}

int sort(int *p,int len)

{

  for(int i=0;i<len;i++){

    for(int j=1;j<len;j++){

      if(p[j]<p[j-1]){

        swap(p+j,p+j-1);

      }

    }

  }

}

int main()

{

  int arr[5];

  int len=sizeof(arr)/sizeof(int);

  for(int i=0;i<len;i++){

    scanf("%d",arr[i]);

  }

  sort(arr,len);

  for(int i=0;i<len;i++){

    printf("%d",arr[i]);

  }

}

时间: 2024-10-14 06:09:45

指针数组与数组指针++--指针运算的相关文章

#运算符、不同的指针类型、数组和指针、指针运算、堆、栈、静态区、只读区、下标VS指针

#运算符:用于在预编译期将宏参数转换为字符串 #define CONVERS(x)  #x   //注:没用双引号包括. 不同类型的指针占用的内存空间大小相同. 局部变量 定义: a[5]; 打印a[i]时,a[i]为随机数. 若定义a[5]={1,2}; 打印时,a[0]=1;a[1]=2;a[2]=a[3]=a[4]=0; 数组地址与数组名: 1.数组名代表数组首元素的地址.  a=&a[0]; 2.数组的地址需要用取地址符号&才能得到 (&a) 3.数组首元素的地址值与数组的

指针数组和数组指针

指针数组:首先它是一个数组,数组的元素都是指针.它是“储存指针的数组”的简称.int *p1[10];数组指针:首先它是一个指针,它指向一个数组.它是“指向数组的指针”的简称.   int (*p2)[10]; 这里需要明白一个符号之间的优先级问题,关键在于p1.p2先和谁结合.“[]”的优先级比“*”要高.p1 先与“[]”结合,构成一个数组的定义,数组名为 p1,int *修饰的是数组的内容,即数组的每个元素.那现在我们清楚,这是一个数组,其包含 10 个指向 int 类型数据的指针,即指针

字符指针与字符数组

学了挺久的c语言,c语言有意思的就有指针这一大块,另外就是字符串,字符指针与字符数组的区别对于初学者应该是比较难以区分的,讲讲自己的看法. 1.定义上的区别 字符数组具有固定的地址,且字符数组的名字不能更改或运算. 字符指针是一个变量,用来存储首字符的地址,且指向的字符串通常为一个常量. char str[] = "helloworld"; str[4] = 'X'; printf("%s",str); 输出结果:hellXworld char *str = &qu

指针和简单数组的结合

存储数据三个基本属性:数据的类型,数据存储的位置,数据的值. 指针介绍 定义:存储值得地址. 格式:与一般的数据定义结合形式如下:                                                                                                             Int update=5;  Int * pt;pt=&update;                                         

指针数组,数组指针、指针函数,函数指针

听到这几个名词不知道大家什么感受,反正我是一脸懵逼,不过我还是比较好学的,在老师的指导下,自己下去也钻研了一下,有一些自己的见解,我想在学习过程中也有童鞋遇到了相同的问题,希望我的总结能给你带来帮助. 首先我们想明确一下这几个概念,知道他们都表示什么,ok,请看: 函数指针:函数指针是指向函数的指针变量. 因而"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个函数都有一个入口地址,该

第四章 数组,字符串和指针

数组 数组若没有指定初始值则为内存遗留值 如果指定了部分初始值,那么其余部分也默认被指定为0: long data[100]={0};          //给data数组的所有元素赋0 字符串是附加有特殊字符(/0)的字符序列 数组的填充: char president[]="thank you"; wchar_t president[]=L"thank you";     //Unicode字符串 const int max=80; char name[max]

指针数组,数组指针,指针函数,函数指针,二级指针详解

先看个简单的:char *p,这定义了一个指针,指针指向的数据类型是字符型,char  *(p)定义了一个指针P: char *p[4], 为指针数组,由于[]的优先级高于*,所以p先和[]结合,p[]是一个数组,暂时把p[]看成是q,也就是char *(q),定义了一个指针q,只不过q是一个数组罢了,故定义了一个数组,数组里面的数据是char *的,所以数组里面的数据为指针类型.所以char *p[4]是四个指针,这四个指针组成了一个数组,称为指针数组,既有多个指针组成的数组. char(*p

二维数组和它的指针

这片文章介绍二维数组int a[ i ] [ j ]中的符号:a,&a[ i ],&a[ i ][ j ],a[ i ][ j ],&a[ i ] [ j ]的含义,重点在后面第二部分的分析,但是前面第一部分的复习数组指针,指针数组和二维指针是前提,前面的不会,后面的没法理解.这片文章写的有些费劲,个人能力不够,可能会有错误,希望各位朋友能够指正,共同进步.//握手 一:先回顾一下数组指针,指针数组,二维指针 先根据逐层分析分方法分析下面的代码 (1)int (*p)[5]; (2

第二章 数组名是一个指针常量吗?

数组名是一个指针常量这种观点来源于数组名在表达式计算中与指针的结果等效性.例如下面的代码: int a[10], *p = a, *q; q = a + 1; q = p + 1; 在效果上看,a + 1与 p + 1是相同的,这很容易给人一种a就是p的假象,但,这仅仅是假象.鉴于指针常量包含了指针和常量两类概念,我们可以把这个问题分开两部分进行讨论. 一.数组名是指针吗? 在<C与指针>一书中,作者用一个著名的例子阐述了数组名与指针的不同.在一个文件中定义:int a[10];然后在另一个文

指针数组和数组指针详解

指针数组和数组指针 1.定义 int *p[4]; //定义了一个指针数组p,p一共有4个单元,每个单元都是一个int型的指针 int (*p)[4]; //定义了一个数组指针p,p可以指向一个拥有4个单元的int型数组 2.指针数组的用法 #include <stdio.h> int main() { int *p[4]; int a=1, b=2, c=3, d=4; p[0] = &a; p[1] = &b; p[2] = &c; p[3] = &d; p