C语言笔记
实用的指针用法
可以用指针做下面四个最基本的操作:
1、向OS申请一块内存,并且用指针处理它。这包括字符串,和一些你从来没见
过的东西,比如结构体。
2、通过指针向函数传递大块的内存(比如很大的结构体),这样不必把全部数据
都传递进去。
3、获取函数的地址用于动态调用。
4、对一块内存做复杂的搜索,比如,转换网络套接字中的字节,或者解析文件。
對於其他情況,應當儘量使用數組,而將指針作為加速程序和優化的手段,原因在於現在訪問數組或指針的語法都會翻譯為相同的機器碼,而且表現一致。
==========================================================================
sizeof() 函数记录的是所读取变量或数组结构体等所占内存的大小,当读取数组时,会将‘\0’计入长度;
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
⒈sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
⒉sizeof是取字节运算符(关键字),strlen是函数。
⒊sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。
⒋数组做sizeof的参数不退化,传递给strlen就退化为指针了。
⒌大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因.
6.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。
7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。
⒏当适用了于一个结构类型时或变量, sizeof 返回实际的大小,
当适用一静态地空间数组, sizeof 归还全部数组的尺寸。
sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸
⒐数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,

浙公网安备 33010602011771号