首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言(指针)3

5、指针运算 5.1指针 +- 整数 在 C语言(指针)1中,我们已经了解过了指针 +- 整数的情况,知道了指针 +- 整数的结果取决于它所指向的对象的类型,这里再来看一种指针...我们可以用上面学到的东西来模拟实现strlen函数,关于strlen函数在之前的文章 —> C语言基础 中已经介绍过,strlen函数的作用是计算字符串的长度,统计的是字符串中 “\0” 之前的字符个数...野指针在C语言中是非常可怕的,可能会导致内存泄漏、程序崩溃、安全漏洞、数据损坏等,我们一定要避免野指针的出现。...NULL是C语言中定义的一个标识符常量,值是0,0也是地址,但这个地址(空指针)是无法使用的,读写地址会报错,但不会构成野指针。...(3)指针变量不再使用时,及时置NULL,指针使用之前检查有效性; (4)避免返回局部变量的地址。

6010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    初识C语言3

    这一篇文章我们从常见关键字开始说起,也是我们初识C语言最后一篇文章了,后面会给大家从各个方面详细的展开来分析,下一篇文章我们会分析分支语句与循环语句。  ...register return short signed sizeof static struct switch typedef union unsigned void volatile while  C语言提供了丰富的关键字...{ //观察num1和num2,这两个变量的类型是一样的 unsigned int num1 = 0; uint_32 num2 = 0; return 0; }  10.2关键字static 在C语言中...13.结构体 结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。 比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。 这里只能使用结构体来描述了。...初识C语言到这里就结束啦!感谢烙铁们的阅读,后续会给大家带来更多有用的知识。

    14310

    C语言剑客之《C专家编程》一书精华提炼

    C语言的许多特性是为了方便编译器设计者而建立的。----唉,怎么这个样子 C语言的基本数据类型直接与底层硬件相对应。...这也是为什么C++语言令人失望的原因:它对C语言中存在的一些最基本问题没有什么改进,而它对C语言最重要的扩展(类)却是建立在脆弱的C类型模型上。...第3章-- 分析C语言的声明 声明器(declarator), 就是标识符以及与它组合与它组合在一起的任何指针,函数括号,数组下标等。...int几乎是C语言所有的默认方式。应该也是C最善于处理的数据类型。...int apricot[2][3][5]; // apricot 两个[3][5]的数组,2*3个[5]的数组,2*3*5个int int (*p)[3][5] = apricot; // 步长 3

    2.4K50

    C语言】指针总结3

    相反,3和4他们指向同一个常量字符串,C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。所以3和4是一样的。 2....过去我们有一个二维数组的需要传参给一个函数的时候,我们是这样写的: #include void test(int a[3][5], int r, int c) { int i = 0...; int j = 0; for(i=0; i<r; i++) { for(j=0; j<c; j++) { printf("%d ", a[i][j]); } printf("\n"); } } int...main() { int arr[3][5] = {{1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7}}; test(arr, 3, 5); return 0; } 这里实参是二维数组...int ( * parr1[3])(); int * parr2 3 ; int ( * )() parr3[3]; 答案是parr1 parr1 先和 [ ] 结合,说明parr1是数组,数组的内容是什么呢

    7010

    C语言入门笔记3

    函数 一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的主函数。(一个project可以有多个.c文件,但只能有一个main函数。...常见错误就是把多个题目程序代码.c放到一个工程下面,每个里面都有main函数,编译不报错,组建会报错。) C语言源程序中的函数是指完成特定数据处理任务、功能上独立的一个程序段。.../函数体 ....... return 0; //返回值 } 函数体的主要成分:变量定义序列+语句序列(VC6.0里面定义序列不能在语句序列之后) int r=5; int f=3;...; 3. 控制语句 控制语句是由特定的语句定义符组成,使用控制语句可实现程序的各种结构方式,从而实现对程序流程的控制。 C语言的九种控制语句。...3)转向语句:break语句、goto语句(尽量少使用,不利于结构化程序设计)、continue语句、return语句。 4.

    94520

    C语言剑客之《C陷阱与缺陷》一书精华提炼

    1、C陷阱与缺陷概述 C语言像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能掌握它的人。本文介绍C语言伤害粗心的人的方法,以及如何避免伤害。...1.1 =不是== C语言则是用=表示赋值而用==表示比较。这是因为赋值的频率要高于比较,因此为其分配更短的符号。...3 连接 一个C程序可能有很多部分组成,它们被分别编译,并由一个通常称为连接器、连接编辑器或加载器的程序绑定到一起。...因此从其它语言转到C语言的程序员应该特别小心地使用数组: int i, a[10]; for(i = 1; i <= 10; i++) a[i] = 0; 4.4 C并不总是转换实参 下面的程序段由于两个原因会失败...譬如在一些编译器中,它的输出为0 0 0 0 0 1 2 3 4。 为什么?因为c的声明是char而不是int。当你令scanf()去读取一个整数时,它需要一个指向一个整数的指针。

    1.5K10

    S3C2440C语言点灯

    第一代程序员使用机器码 第二代程序员使用汇编 第三代程序员使用C语言 C语言相较于汇编和机器码是一个更高级的语言,我们使用的技术也应该与时俱进 之前控制寄存器是配置GPFCON和GPFDAT寄存器...,通过地址访问,所以可以用C语言来进行对地址的访问。...GPFCON——0x5600,0050 GPFDAT——0x5600,0054 目录 S3C2440芯片手册导读 用指针表示 代码的编写 调错 S3C2440芯片手册导读 对于GPFCON,只用到了16...表示如下: *pGPFCON = 0x100; //0x400 //配置成输出引脚 *pGPFDAT = 0; //低电平点灯 会导致 在这两个地址中把这两个数据写进去 代码的编写 在编写C语言的代码前...start.S -o start.o arm-linux-gcc -c led.c -o led.o arm-linux-ld -Ttext 0 led.o start.o -o led.elf#链接

    67310

    C语言笔记---(3)变量篇

    1.变量名(标识符) 变量名:变量名在 C 语言里面属于标识符(identifier),命名有严格的规范。 只能由字母(包括大写和小写)、数字和下划线(_)组成。 不能以数字开头。...2.声明变量 C语言的变量,必须先声明后使用。如果一个变量没有声明,就直接使用,会报错。 每个变量都有自己的类型(type)。声明变量时,必须把变量的类型告诉编译器。...3.变量赋值 C语言会在变量声明时,就为它分配内存空间,但是不会清除内存里面原来的值。这导致声明变量以后,变量会是一个随机的值。所以,变量一定要赋值以后才能使用。 赋值操作通过赋值运算符=完成。...虽然 C语言会自动转换类型,但是应该避免赋值运算符两侧的类型不一致。...C语言的变量作用域主要有两种:文件作用域(file scope)和块作用域(block scope)。

    92120

    C语言:深入理解指针(3)

    int main() { printf("指针接收字符\n"); char ch = 'w'; char* pc = &ch; printf("\t*pc=%c\n", *pc); printf...printf("指针接收字符串\n"); const char* pstr = "abcdef";//const 加了一层保护,使其变成常量字符串,被修改编译器会报错 printf("\t*pstr=%c\...=%c\n", pstr[3]);//[]是特殊的解引用操作符,等价于*(pstr+3),相当于得到第1个元素偏移3得到第四个元素 printf("\tabcdef[3] = % c\n", "abcdef...其实数组指针有自己的应用场景,在此之前要先了解二维数组传参的本质 以往我们对有一个二维数组需要传递给函数时,我们是这样写的 void test(int a[][5], int r, int c) {...0; j < c; j++) { printf("%d ",p[i][j]); } printf("\n"); } } int main() { int arr[3][5] = {

    10510

    杂谈c语言——3.内存对齐

    ; return 0; }    结构体成员变量分配内存的详细过程:         1.首先:char c为第一个成员变量,遵循第一条规则,char c从偏移量0开始,占1个字节...2.强化训练 struct S3 { double d; char c; int i; }; struct S4 { char c1; struct S3 s3; double d;...sizeof(s4)  练习4.结构体内存分配过程:    1.首先:char c1为第一个成员变量,遵循第一条规则,char c从偏移量0开始,占1个字节,指针指向下一个偏移地址1    2....其次,第二个成员变量为结构体S3,说明是嵌套结构体,通过刚才对S3的结构体大小可知是16字节,且S3中最大对齐数为8,通过规则4可知,现指针指向的偏移地址1并不是对齐数8的整数倍,所以指针需要向后跳转...第一个因为内存对齐,虽然ch只有1字节,但浪费3个字节 可以保证只读取到ch (不读到i) 第二个因为内存不对齐,会访问到ch和i的前3个字节的内容。会出问题

    6310

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券