首页 > 其他分享 >C语言指针运算

C语言指针运算

时间:2023-04-23 19:11:24浏览次数:29  
标签:ac p1 运算 int C语言 printf 指针

给一个指针加1表示要让指针指向下一个变量,也就是在地址值上加一个sizeof(指针所指的类型),例如:

int a[10];

int *p=a;

*(p+1)=a[1];

*(p+n)=====ac[n]

 

同理:这些指针运算可以对指针做:

1.给指针加减一个整数(减就是往前移一位)

2.递增递减(++/--)

3.两个指针相减(其实就是两个指针的差值/sizeof)

指针可以进行加减运算,也可以进行比较(比较他们在内存中的地址大小<,<=,==,>,>=,!=   a[0]<a[5]  因为数组中单元的地址是递增排列的),但是不能乘除,指针的乘除没有意义

 

下面的代码为了看起来更加直观(关于指针加减运算):

#include <stdio.h>

int main()
{
    char ac[]={0,1,2,3,4,5,};
    char *p=ac;
    char *p1=&ac[5];
    printf("p  =%p\n",p); //p  =000000000062FE00
    printf("p+1=%p\n",p+1); //p+1=000000000062FE01
    printf("*(p+1)=%d\n",*(p+1)); //*(p+1)=1
    printf("p1-p=%d\n",p1-p); //p1-p=5  指的是ac[5]和ac[0]之间能放几个这样类型的东西 
    
    int ai[]={0,1,2,3,4,}; 
    int *q=ai; 
    printf("q  =%p\n",q); //q  =000000000062FDE0
    printf("q+1=%p\n",q+1); // q+1=000000000062FDE4
    printf("*(q+1)=%d\n",*(q+1)); //*(q+1)=1
    return 0;
 } 

 

标签:ac,p1,运算,int,C语言,printf,指针
From: https://www.cnblogs.com/vv-77/p/17325227.html

相关文章

  • MKL稀疏矩阵运算示例及函数封装
    IntelMKL库提供了大量优化程度高、效率快的稀疏矩阵算法,使用MKL库的将大型矩阵进行稀疏表示后,利用稀疏矩阵运算可大量节省计算时间和空间,但由于MKL中的原生API接口繁杂,因此将常用函数封装,便于后续使用,最后在实际例子中调用接口执行想要的矩阵运算。0稀疏矩阵稀疏矩阵是指矩阵......
  • 运算放大器symbol输入端正负号判别
    无论是noms还是pmos都可以用判别:假设某一端输入端为1,判断输出是否为同相1,如果是1,则为正端,如果是0,则为负端  ......
  • MKL普通矩阵运算示例及函数封装
    本示例将介绍MKL中的矩阵乘法和求逆,使用MKL进行此类大型矩阵运算可大量节省计算时间和空间,但由于MKL中的原生API接口繁杂,因此将常用函数封装,便于后续使用,最后在实际例子中调用接口执行想要的矩阵运算。1MKL矩阵乘法案例所用示例如下,矩阵A、B分别为\[A={\left[{\begin{array......
  • C语言 合并两个升序的数组,成升序的数组
    #include<stdio.h>//两路合并法把两个已按升序排列的数组合并成一个升序数组main(){inta[3]={10,13,15};intb[5]={2,4,6,7,8};intc[10],i=0,j=0,k=0;while(i<3&&j<5)if(a[i]>b[j]){c[k]=b[j];k++;j++;}else{......
  • c语言刷——滑动窗口&&双指针 leetcode合集
    目录字符串问题3.无重复字符的最长子串76.最小覆盖子串424.替换后的最长重复字符438.找到字符串中所有字母异位词1208.尽可能使字符串相等连续1的问题485.最大连续1的个数487.最大连续1的个数II(p)1004.最大连续1的个数III综合题239.滑动窗口最大值字符串问题3.无重......
  • C语言函数大全-- o 开头的函数
    C语言函数大全本篇介绍C语言函数大全--o开头的函数1.obstack_init,obstack_free,obstack_alloc,obstack_blank,obstack_grow1.1函数说明函数声明函数功能voidobstack_init(structobstack*obstack_ptr);它是POSIX标准库中的一个非标准函数,用于初始化对象堆栈。对......
  • C语言--数组1
    一维数组和二维数组【一维数组的创建和初始化】数组的创建数组是一组相同类型元素的集合。数组的初始化数组在创建时不指定数组的大小就要初始化。数组的元素个数根据初始化内容来确定。但对于下面代码要区分,其在内存中如何分配。chararr1[]="abc";chararr2[3]={'a','b','c'......
  • C语言发展历程、第一个C程序、数据类型、常量变量、字符串
    一、C语言的发展过程计算机是硬件,能识别电信号,电信号有两种,正电和负电,转化成数字信号1/0,计算机只能识别二进制指令,二进制语言是最早的低级语言。通过查表使用,只有科学家掌握。后来人们用一串二进制数表示一个功能,这个就叫助记符,如10100001-ADD,这就是汇编语言。后来人们想能不能用......
  • 打卡 c语言趣味编程
     1.百钱百鸡#include <stdio.h>int main(){ int cock, hen, chicken; for (cock = 0; cock <= 20; cock++) { for (hen = 0; hen <= 33; hen++) { for (chicken = 0; chicken <= 100; chicken++) { if ((5 * cock + 3 * hen + chic......
  • 打卡2 c语言趣味编程
    3.抓逃犯#include <stdio.h>#include <math.h>int main(){ int a=0, b=0; //a:前两位,b:后两位 for (a = 0; a < 9; a++) { for (b = 0; b < 9; b++) { int c = a * 1000 + a * 100 + b * 10 + b; if (a != b &&sqrt(c)==(int)sqrt(......