首页 > 其他分享 >2013-7-12学习笔记

2013-7-12学习笔记

时间:2023-06-11 13:31:38浏览次数:64  
标签:12 函数 int 笔记 ++ 数组 printf 2013 指针


形参改变影响实参主要应用在以下几个方面:

1.用于外部函数要交换主函数中的两个值,可以用指针来实现,但通过指针来实现主函数中两个数的交换必须要知道,哪些类型属于值传递,哪些类型属于地址传递,对于值传递的那些类型(例如:整形、字符型)才有必要用指针来实现,因为数组,字符串属于地址传递类型,所以没必要在外部函数通过用指针来实现主函数中的两个数的交换。举例:

2.在开辟空间的时候使用二级指针来实现主函数中指针内存的开辟,不然如果不用二级指针的话就必须在外部开辟空间的函数有一个返回值类型,然后赋值给主函数中的指针,如果不通过这两种方法实现的话就可能引发内存问题,举例:

方法 一、通过在外部开辟空间的函数里有返回指针类型,然后赋值给主函数中的指针的方法,来实现主函数中指针空间的开辟

方法二、通过二级指针来实现对主函数中指针的赋值,所谓二级指针就是指向指针的地址




数组存放的问题

int a[]={2,3,4};
int *p=a;
int *q=&a[0]; //跟第一种情况一样,都是指向数组第一个元素的首地址
int *k=&a;  //将数组a当做整体,如果k++,那就指向末尾了

strcpy标准写法
//断言
char * func(cahr *pDest, const char *pBegin)
{
assert(pDest !=NULL && pBegin != NULL);  //意思就是如果这两个有一个为空,就不向下执行,返回一个message或者提示什么的
char *pReturn = pDest;
while((*pDest++ == *pBegin != '\0'));
return pReturn;
}




有关指向数组指针的地址问题

#include <stdio.h>
void func(int a[4])   //这儿编译器不会把它当做数组,只是会当做指针而已
{
    printf("形参的字节大小:%d\n",sizeof(a));    //形参数组,编译器只会把它当做指针
}

int main(int argc, const char * argv[])
{
    int a[]={1,2,3,4};
    func(a);
    int *p=a;
    int *k=&a[0];
    int *q=&a;
    int *j=&a+1;//把a数组当做整体加一,跟上面的q+1不一样q+1只是将数组的首地址+1
    printf("P,k,q的地址:%d %d %d\n",p,k,q);
    printf("数组a的内存大小是多少字节:%d\n",sizeof(a));
    printf("++P:%d\n",++p);
    printf("++k:%d\n",++k);
    printf("&a+1:%d\n",&a+1);
    printf("++q:%d\n",++q);
    printf("&a+1,将数组作为一个整体+1:%d\n",j);
    printf("j+1,将数组作为一个整体+1:%d\n",j);
    printf("取出数组的最后一个数:%d\n",*(j-1));
    //++的话要看它的偏移是以哪种类型偏移的,char*p,p++,就是以字符型字节长度为单位长度+1;int *p=&a+1;偏移是以整个数组的字节长度为单位长度加一
    return 0;
}

运行结果:

形参的字节大小:8

P,k,q的地址:1606416448 1606416448 1606416448

数组a的内存大小是多少字节:16

++P:1606416452

++k:1606416452

&a+1:1606416464

++q:1606416452

&a+1,将数组作为一个整体+1:1606416464

j+1,将数组作为一个整体+1:1606416464

取出数组的最后一个数:4



int a[]={1,2,3};
int *p=a+1;
printf("%d",a);
printf("\n%d",p);
printf("\n%d",++p);

运行结果:看出来++p跟a+1是等价的,单位长度都是int型的单位长度

1606416332
1606416336
 
1606416340
 

 
获取当前时间(C语言)
#include <stdio.h>
#include <time.h>
#include <string.h>
int main(int argc, constchar * argv[])
{
    time_t now;
    structtm *timenow;
    time(&now);
    timenow = localtime(&now);
    char *p = asctime(timenow);
    printf("当前时间是:");
    printf(p);
    printf("%d",strlen(p));
}

标签:12,函数,int,笔记,++,数组,printf,2013,指针
From: https://blog.51cto.com/dingxiaowei/6457610

相关文章

  • 612无题
    1.千淘万漉虽辛苦,吹尽黄沙始到金。-------------成功2.最大的遗憾莫过于,我们无法同时拥有青春和对青春的感悟3.对于一个鸡蛋来说,从外打破是食物,从内打破是生命。人生也是如此,从外打破是压力,从内打破是成长。4.经历的意义,在于引导你,而非定义你。记住深渊可以凝视,但不要驻足。5.......
  • phonegap3.1.0自学笔记01_命令行界面(CLI)简单使用
    要使用phonegap的CLI必须首先安装好phonegap,phonegap的安装还请参看我的另外一篇文章:windows7搭建phonegap3Android开发环境。本篇文章介绍CLI的简单使用,由于本人水平有限,还请大侠不要拍砖。 phonegap3.1.0使用命令行去创建应用程序的框架,然后我们可以基于命令行创建的程序再去进......
  • 计组复习笔记
    老师说的整体要注意的...做题看清选对错课程知识点多,难点不一定在后边,可能开头就挺难。考试的时候经常说废话:比如主存的扩展,既告诉地址,还告诉总线的位数,总线的位数就是废话,实际的地址没那么多,要分清用不到的信息不知道的知识点跳过去。对缩写要知道,不要求每个字都对,要知道是......
  • 【已解决】MySQL连接错误 ERROR 1129 (00000): Host ” is blocked because of many c
     问题连接MySQL 报错 ERROR1129(00000):Host”isblockedbecauseofmanyconnectionerrors原因同一个IP在短时间内产生太多终端的数据库连接(超过mysql数据库max_connection_errors设置),导致被阻塞。在系统变量:max_connect_errors设置了允许中断的次数,超过了这个次数(或者......
  • CF121E Lucky Array
    思路正解是线段树?然而我太菜了不会啊。。。题目的数据范围是\(10^5\),于是我们可以从分块的角度去思考这个问题。打个表可以发现在题目给定的值域(\(10^4\))内满足条件的数一共只有三十个,于是这道题就简单了。先把数列分个块,然后对于每一块,维护一个区间加的标记和一个值域的......
  • 线性空间学习笔记(部分)
    因为线性空间的知识点多而杂,无法一一记录,因此只取一些学习中遇到困难的地方做笔记。列向量与行向量只要不特殊提及,在线性代数中研究的向量都是列向量。显然,一个列向量左乘行向量的结果是一个标量。而一个列向量左乘一个矩阵,可以看作左乘一行列向量。即:\[A\mathbfx=A\begin{b......
  • 9.12 抽象类与接口的区别
    常见面试题No区别抽象类接口1.定义abstractclass抽象类名称interface接口名称2.组成构造,普通方法,静态方法,全局常量,成员抽象方法,全局常量,普通方法,static方法3.权限可以使用各种权限定义只可以使用public4.子类使用子类通过extends关键词可以继......
  • 《傅里叶分析》第五章笔记
    \(\mathbb{R}\)上的Fourier变换Fourier变换的基本理论实数域上函数的积分先前的章节已经给出了有界闭集上函数积分的定义,而\(\mathbb{R}\)上连续函数积分的自然延拓即\[\int_{-\infty}^{\infty}\]......
  • JavaScript学习笔记:Web安全模型
    为了保证安全,浏览器中的JavaScript不能读写设备中的文件,也不能访问任意的服务器。同源策略同源策略指的是脚本只能访问与包含它的文档同源资源。源是指文档URL中的协议、主机与端口部分,完全相同则是同源,任意一项不同都不是同源。脚本文件的URL与同源策略毫不相干,同源策略至于......
  • JavaScript学习笔记:客户端编程之异常处理
    未被捕获的异常在程序中,往往会出现异常。虽然主动捕获这些异常是保证程序健壮的必要做法,但是难免会漏掉一些。对于未被捕获的异常,浏览器会在控制台显示一条错误信息,该信息包含异常信息和其在代码中出现的位置。window.onerrorWindow对象有一个onerror属性,将其指定为一个函数,可......