C指针小结2

C语言小结 C语言小结,适用于有其他编程语言基础的开发者#include <stdio.h> int main() { /* 我的第一个 C 程序 */ printf("Hello, World! \n"); return 0; }● 所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。 ● /* … */ 用于注释说明。 ● printf() 用于格 阅读详情

                                                                                       C指针小结2

     在上一篇对指针的小结中只是片面的说明了指针的概况,与基本含义,其实说到指针必然要提及数组,数组与指针有着密不可分的联系。但是切记数组和指针根本是两个东西,指针不能和数组画等号。

    数组:

         例如 int a[10];这声明的是一个由10个整形组成的数组,其中包含10个整形元素,同时数组名的值是一个指针常量,也就是数组第一个元素的地址。如果前面声明的是其他类型那么,数组名的类型就是“指向其他类型的常量指针”。之前说过数组与指针不是一个东西,那么他们的区别在哪里?

       1.数组具有确定数量的元素,而指针是一个标量,只有当数组名在表达式中使用时,编译器才会为他们产生一个指针常量。

       2.数组名是一个指针常量,不能被修改,只有在两种场合下,数组名并不用指针常量来表示,就是当使用sizeof关键字和使用&运算符的时候,分别返回整个数组的长度和一个指向数组的指针。

       3.并且一般建立数组后都会给数组开辟实际存在的空间。

  数组内容的引用:

     众所周知想引用数组的内容一般有两种方法:

      1.下标引用

      2.间接引用

      除了[]的优先级比*高外没有什么区别。

       例如:

                a[3]    或者   *(a+3);

      关于指针引用和下标引用哪一个更有效率的问题:

毫无疑问指针引用的速度绝对比下标引用快,因为编译器在对下标处理时更费时间,当然只是指针引用的效率高而已,在现实实际的问题前面,指针不一定就更快了。因为频繁使用指针的代码必然看起来更复杂,可读性和下标法比起来较差。

     以下有几个小技巧:

      1.当你根据某个固定的数目的增量在一个数组移动时,指针更加便捷。

      2.声明为寄存器变量比静态存储变量效率更高。

      3.尽量少使用计数器

      4.在运行时出现&与sizeof将会付出很多时间与资源

指针数组:

        就是由指针组成的数组,即每一个数组内元素就是一个指针,这个应用在字符串应用尤其多。

        char *p[3]={

                         {"hello"},

                         {"Linux"},

                         {"DDD"},

                         };

      小结与提示:

                    1.请不要在一个未指定长度的数组的指针上执行指针运算。

                     2.只要有可能,函数的指针形参都应该声明为const

      关于字符指针变量和字符数组的讨论:

       例如:

    char *cp; 与char str[20];

                str由若干元素组成,每个元素放一个字符;而cp中存放字符串首地址

                 赋值方式:

                       str="i love linux"错误,数组只能对元素赋值。

                       cp="i love linux"正确

                       数组也可以在最开始赋值char str[30]="i love linux";

 现在总结下那些令人头疼的指针的声明: 

  ⑴  int  *p[3];                指针数组              

  ⑵  int   (*p)[3];             指向一维数组的指针

  ⑶  int  *p(int);              返回指针的函数

  ⑷  int  (*p)(int);            指向函数的指针(以一个整形为参数)返回一个整型变量

  ⑸  int  *(*p)(int);          返回一个指针的指向函数的指针

  ⑹  int(*p[3])(int);         函数指针数组,函数返回整型变量

  ⑺  int  *(*p[3])(int);     函数指针数组,函数返回整型指针


最后再来一个小例题:

                  用指针方式实现矩阵乘法:

                  例如

                          2   -6            4    -2    -4    -5             50     14   -44    -52

                          3    5     *                                  =     -23    -21    18     20

                          1   -1            -7    -3    6    7              11       1    -10    -12

           int   matrix_multiply(int  *m1, int   *m2,register  int *r,   int x,  int  y,int  z)

            {

                  register    int   *m1p;

                  register    int   *m2p;

                  register    int   k;

                  int  row;

                  int  column;

                  for(row=0;row<x;row++)

                    {

for(column=0;column<z;column++)

{

m1p=m1+row*y;

m2p=m2+column;

   *r=0;

                   for(k=0;k<y;k+=1);

       {

                                      *r+=*mlp* (*m2p);

m1p++;

m2p+=z;

}

                        r++;

                     }

             }

        }

           

              

              

遗传算法解整数规划IntCon x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon) IntCon就是代表整数的参量,描述的是哪几个自变量是0-1整数变量。比如navrs设置有4个变量,设置IntCon为[2 3],代表第2和第3个变量是整数。 再比如设置IntCon=2:2:nvars,代表偶数项的变量是整数。 值得注意的是一旦设置了非空的IntCon,则Aeqandbeqmust be an empty entry ([]), andnonlconmust re... 阅读详情

相关推荐

TIFF文件渲染避坑指南:Three.js与Cesium的5个关键差异点

本文深入对比了Three.js与Cesium在渲染TIFF文件时的5个核心差异点,包括坐标系处理、内存管理、着色器系统、性能优化策略和错误处理机制。重点解析了Cesium的全球WGS84坐标系与Three.js局部坐标系对地理空间数据渲染的根本影响,并提供了针对性的性能优化与调试方案,帮助开发者根据项目需求选择合适的3D引擎并有效避坑。

weixin_29243279的博客 334

输入型参数和输出型参数

C语言深度学习                                                 ---输入型参数和输出型参数 参考朱有鹏C语言大讲台 1、函数为什么需要形参和返回值 (1)函数名是一个符号表示整个函数代码段的首地址,          实质是一个指针的常量,指针常量指向这个函数          用到的函数名都是当地址用的,用来调用这个函数的。

李辉的博客 1万+

手把手教你排查Abaqus中的Johnson-Cook损伤参数:避免因d3正负号导致的仿真失败

本文详细解析了Abaqus中Johnson-Cook损伤参数d3正负号设置的关键问题,帮助用户避免因参数错误导致的仿真失败和Excessive distortion报错。通过对比不同文献定义、提供实操指南和典型错误排查流程,有效提升非线性分析的准确性和效率。

weixin_33960567的博客 356

C语言指针小结2

对于数组指针的定义与普通的指针变量有一点区别int main()return 0;我们在定义时,首先看他是指针,所以在指针变量p前加*代表他是指针变量,然后就是后面的[5]代表他是数组指针,指向的数组有5个元素,最后时前面的int代表数组指针指向的数组中的元素时int类型。相应的二维数组的定义int main()//三行两列的二维数组return 0;

cccccsssssgggooo的博客 1095

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 273

Rstan下载安装攻略

准备把Rtools删掉,重新下载(胡乱猜测是安装顺序的问题),但是卸载时显示Rtools被占用,但我已经把该关的都关了。这一问题的出现,直接让我卸载掉了Rstudio,又重新安装了一个,不过这次安装在另一个磁盘,因为原来的内存不多了。或者参考知乎,使用清华镜像网址进行下载:(知乎链接)https://zhuanlan.zhihu.com/p/346947595(清华下载链接)https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/Rtools/

m0_64643017的博客 3101

C语言——指针小结(2)

6、返回指针值的函数 int main() { float *search(float(*pointer)[4],int n); float score[][4]={{1,2,3,4},{5,6,7,8}}; float *p; p = search(score,k); printf("%d",*p); } float *search(float(*pointer)[4...

qq_36116242的博客 266

做了一个3DTiles编辑器,支持3DTiles的预览和裁剪导出

3DTiles编辑器的功能极其简洁,核心就是3DTiles格式模型的预览和裁剪。为了演示方便,本文所使用的源数据为mipmap3d[1]网站所提供的无人机拍摄影像,并进行3DTiles构建。打开软件,输入的绝对路径之后,点击添加模型,就可以将模型加载进预览区。之后,点击裁剪模式按钮,默认会出现立方体裁剪框,可通过拖动句柄的方式去调整裁剪框的范围。同时,除了默认的盒体裁切模式外,还支持多边形裁切,点击多边形裁切后,可切换到顶视图,选择重绘多边形,可进行打点绘制。

兴趣使然的创作者 603

C语言中对指针的小结(2)

C语言中对指针的小结(2) 在上一篇小结(1)中对指针进行了浅谈,本文将进一步分析其他类型的指针 一、字符指针: 1. char* p;//定义一个字符指针,类型为char* ,该指针指向一个字符型的变量 使用如下: int main() { char ch = 'a'; char *pc = &amp;amp;ch;//pc存放ch的地址 *pc = 'w';//对pc解引用将访问到ch这个变量,并...

weixin_44416545的博客 249

[Research Tips] 我的zotero文献管理方案: 云端同步+iPad批注+overleaf笔记

文献管理一直是一个很头疼的事. 最初直接在paper上做笔记, 后来尝试各种各样的文献管理软件, 比如endnote, mendeley等, 再后来直接用excel. 每一种方案都不是很满意. 最近尝试了各种软件, 摸索出一个合适自己的文献管理方案, 分享给大家. 我的需求: 支持PDF内全文搜索. 支持笔记搜索. 支持同步 可以批注PDF. 支持word内引用 支持Tex笔记语法 支持标签化管理 目前的方案除了第二个需求, 其他的都支持. 就目前我的经验来说, 除了知网研学可以搜索笔记外, 其他软件都

落日之城 5318

微信支付接口「系统繁忙 SYSTEM_ERROR」/「文件不存在」报错分析与解决方案 接口开发实现SDK

微信支付的“平台证书模式”只有5年的有效期,过期后微信支付将不再签发新的平台证书,转而要求开发者使用“微信支付公钥”来处理敏感信息加密及回调签名验证。然而,由于以下几点原因,许多开发者在调用 获取平台证书。尽管微信支付在技术迭代上有其必要性,但报错设计过于不友好。诸如“系统繁忙”这样的提示很难直接关联到平台证书失效或公钥切换问题。这样的信息表达,开发者不仅看不懂,还需要花费大量时间分析排查,非常影响效率。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 789

11.22 C语言阶段小结(初学至数组)及指针初步小结2

1.比较两个字符串是否相等——strcmp函数int n;2.while语句不超限的方法=EOF)四.指针基础小结2数组指针——本质是一个指针,指向数组中的某个元素的地址int *pa=a;等价于int *pb=&a[0];指针[下标]的方式访问数组元素数组指针加减运算——地址加减整数n——加减n个数组元素的大小注意:数组名不能参与加减运算//int *pa=0;*pa++;//Error通过数组指针遍历数组fori0;in;

2402_88598958的博客 1662

基于 YOLOv8 的自动驾驶车辆障碍物检测与避障路径规划

本文探讨基于YOLOv8的自动驾驶车辆障碍物检测与避障路径规划系统。在感知层面,采用YOLOv8模型实现多类别障碍物识别,结合单目视觉距离估计和ByteTrack多目标跟踪算法,完成障碍物的稳定检测与运动状态估计。在路径规划层面,设计分层规划架构,融合全局路径规划与局部避障算法,重点实现Frenet坐标系下的采样优化算法和基于模型预测控制的实时避障轨迹生成。通过完整的代码实现与仿真实验,验证系统在复杂交通场景下的有效性与实时性,为自动驾驶开发者提供从理论到实践的完整技术参考。 关键词:YOLOv8;自动驾驶

huanghm88的专栏 253

C语言小结2——指针

1、一个指针变量到底占几个字节??? 假设 p 指向char类型变量(1个字节) 假设 p 指向int类型变量(4个字节) 假设 p 指向double类型变量(8个字节) 2、一个指针变量,无论它指向的变量占几个字节,该指针变量本身所占为4个字节 一个变量的地址用该变量的首字节的地址来表示 3、CPU—&amp;amp;gt;内存 控制线 32根 2^32 地址线 数据线 ...

weixin_43566706的博客 193

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

c和指针1~2章小结

第一章:快速上手          本章主要通过对一个程序的讲解、分析来引导读者进入c和指针的世界,通过对这个程序的分析,来介绍这本书介绍的整体内容,思路,让读者实现带着问题去读书。          知识笔记:           1、程序主要实现按指定的列对其进行打印、输出的功能。           2、程序进行编译前需要先对其进行预处理(通过预处理器),如

BUG_SPECIAL的博客 415

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C和指针第四章编程练习题小结2

scanf输入字符串 遇到空格等就会停止输入。所以最好用gets()函数: gets(src); 同样printf输出字符串的方式printf("%s\n",src); src为存储字符串的数组名   假如dst数组只从src中复制10个字符。若src输入大于10个字符,则直接用printf会出错。 因为以字符串格式输出,必须等到出现’\0’才会结束。 如果复制的时候,没有将’\0’复制

行者 581

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

习题7 1-4题

7.1#include <stdio.h> int square(int i) //调用函数 { return i*i; //返回i*i } int main() { int i=0; i=square(i); for (;i<3;i++) { static int i=1; i+=square(i); prin

TX1738381517105的博客 687

C语言中关于指针的数据类型和指针运算的小结

有关指针的数据类型小结 记忆诀窍: 容易混淆的几个int *p[n] 、int (*p)[n],其中int *p[n]是一个数组,数组的元素是指针;int (*p)[n]是个指针,是一个指向二维数组的指针或者分解为长度为n的一维数组。 2. 指针运算小结 指针变量加(减)一个整数: 如 p++、p--、p+i、p-i 等,指的是将该指针的原值和它指向的变量所占的内

龙少技术博客 1543

C语言 指针小结

指针 ——>指针变量 类型名 *变量名 int *point1; char *point2; 注意:*p可以直接使用,它代表指针p指向的变量,*p可以当做被指向的变量使用!~~~~ 一个变量的地址 成为这个变量的指针。 ——>数组元素的指针 定义:数组元素的地址 定义数组 一维数组 int p[10] = {1,2,3,4}; ...

weixin_30814223的博客 145

C语言指针知识点小结

前期回顾   C语言指针基础知识点(一)–指针及指针变量   C语言指针基础知识点(二)–指针变量的引用   C语言指针基础知识点(三)–指针变量作为函数参数   C语言指针基础知识点(四)–通过指针引用数组   C语言指针基础知识点(五)–用数组名作函数参数   C语言指针基础知识点(六)–通过指针引用多维数组   C语言指针基础知识点(七)–通过指针引用字符串   C语言指针基础知识点(八...

zhf的博客 1万+

C语言——指针

C语言——指针

weixin_59796310的博客 11万+

c语言指针心得3,c语言指针实验报告-c语言指针心得.pdf

C语言程序设计实验报告实验名称 指针学 院 机械工程与自动化 专业班级 机械 1003姓 名 学 号任课教师 实验时间1 实验目的(1)掌握指针的概念,会定义...

weixin_34709138的博客 671

c语言指针实验心得与小结_C语言指针小结

指针小结——C语言 最近发现自己C语言基础还是很薄弱,去广图借了本《C指针原理揭秘——基于底层实现机制》深入学下指针命令行输入参数 大家想必都在windows中使用过ping 127.0.0.1 -t,其中这些参数怎么来的呢?看下面#include <stdio.h> #include <stdlib.h> int main(int argc,char **argv) { ...

weixin_35363591的博客 4632

C语言指针进阶训练

对C语言指针的进一步学习,通过常见的进阶练习,能够帮助学者更加深刻的学习指针的实际操作与用法。

Hello_shuo的博客 2214

c语言指针实验小结,C语言中的指针小结

阿涛,你要认真对待每一件事情,你要潇洒,你要做自己!这两天复习了一下C语言中的指针,发现很多东西几乎全忘了,然后在CodeBlocks中打印一些小程序,进行知识的恢复,以后再忘了,就到自己的博客中来查看下,顺便给一些刚学习C语言的同学一个参考,有不对的地方还请大家来指正,有疑问的请给阿涛留言。一:五个重点概念int *a;int **a;(1)指针的类型:指针本身自己的类型,如上两个指针,指针类型...

weixin_42510914的博客 1969

C语言结构体指针数组小结

第一次写博客,有点小激动。话不多说,进入正题。 c语言最常见的几种东西:结构体,数组,指针和函数。单个定义很好理解,组合在一起就会让人头大。先说函数、数组和指针的组合。 1、函数、数组和指针的组合 包括指针函数、函数指针、指针数组和数组指针,先从根本上介绍这几者的区别。 为了直观理解,下面具体介绍: 1.1 数组指针 ...

qq_22393361的博客 4825
上一篇: C指针小结1
下一篇: C指针小结3
zmrlinux
博客等级 码龄12年 409粉丝 327原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值