c 函数及指针学习 3
strlen(x) 返回 size_t 类型,size_t是 unsigned int 类型,所以 strlen(x)-strlen(y) 返回 unsigned int 始终 >=0
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h> #include <string.h> void main() { char *sa= "sdhshdh" ; char *sb= "cdehhhhsdssssd" ; printf ( "%d , %d \n" , strlen (sa), strlen (sb)); if ( strlen (sa)- strlen (sb)>=0) { printf ( "run 1\n" ); } } |
如果不加 include <string.h>头文件
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <stdio.h> void main() { char *sa= "sdhshdh" ; char *sb= "cdehhhhsdssssd" ; printf ( "%d , %d \n" , strlen (sa), strlen (sb)); if ( strlen (sa)- strlen (sb)>=0) { printf ( "run 1\n" ); } } |
1
|
warning C4013: 'strlen' undefined; assuming extern returning int |
2可变参数列表
要用到 stdarg 宏
3数组名
数组名是一个常数指针,在两种情况下数组名不用 指针常数表示
sizeof sizeof返回整数数组的长度
& 是指向数组的指针,而不是指向指针常量的指针。
1
2
3
4
5
6
|
#include <stdio.h> void main() { int a[4]={1,1,1,1}; printf ( "%d \n" , sizeof (a)); } |
并不是 4(指针常量的长度)
1
2
3
4
5
6
7
8
|
#include <stdio.h> void main() { int a[4]={1,1,1,1}; int *b; b=a; printf ( "%d \n" ,b[2]); } |
数组对数组赋值的方法:利用循环(已经有了数组,对数组进行更新)
利用指针变量。
不能这样写
1
2
3
|
int a[4]={1,1,1,1}; int b[4]; b=a; |
因为 b为指针常量不能赋值。
4下标引用,和间接引用
1
2
3
4
5
6
7
|
#include <stdio.h> void main() { int a[4]={1,2,3,4}; printf ( "%d \n" ,*(a+2)); printf ( "%d \n" ,a[2]); } |
负值下标
1
2
3
4
5
6
7
8
9
|
#include <stdio.h> void main() { int a[4]={1,2,3,4}; int *p; p=a+2; printf ( "%d \n" ,*(a+1)); printf ( "%d \n" ,p[-1]); } |
下标引用可以作用于任何指针
1
2
3
4
5
6
7
8
9
|
#include <stdio.h> #include <math.h> void main() { int a[4]={1,2,3,4}; printf ( "a[0]->%d \n" ,a[0]); printf ( "1[a]->%d \n" ,1[a]); printf ( "a[1]->%d \n" ,a[1]); } |
c 函数及指针学习 3的更多相关文章
- C函数及指针学习1
1 大段程序注释的方法 #if 0#endif 2三字母词 以两个问号 开始的都要注意 3 字面值(常量) 在整型号字面值后加 字符L (long),U(unsigned)说明字符常量 为长整型 或( ...
- c 函数及指针学习 10
标准库函数 1算数运算stdlib.h 2随机数stdlib.h 3字符串转化stdlib.h 4数学函数 math.h 5日期和时间 time.h 6信号 signal.h 7打印可变参数列表std ...
- c 函数及指针学习 9
指针的高级应用 处理命令行参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> int main(int ar ...
- c 函数及指针学习 7
1.结构的存储分配 1 2 printf("%d \n",sizeof(char)); printf("%d \n",sizeof(int)); int 类型为 ...
- c 函数及指针学习 5
聚合数据类型 能够同时存储超过一个的单独数据. c语言提供了数组和结构体. 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> # ...
- c 函数及指针学习 4
1数组和指针声明的差别 声明数组:为数组分配内存,为数组名分配内存(指针常量 4个字节) 指针:为指针分配内存(指针变量 4个字节) 1 2 3 4 5 6 7 8 9 10 #include < ...
- C函数及指针学习2
1.break 永久终止循环,continue 结束当前循环 2.switch 每个case标签要有唯一值,(且为常量或常量表达式) 不加break 时执行流会贯穿整个case 标签 3 赋值操作符 ...
- c 函数及指针学习 8
联合体 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> union sa { double a; int b; ...
- c 函数及指针学习 6
不完整声明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /* 方法一 */ struct tag_a{ ...
随机推荐
- Exif的Orientation信息说明
EXIF Orientation 参数让你随便照像但都可以看到正确方向的照片而无需手动旋转(前提要图片浏览器支持,Windows 自带的不支持) 这个参数在佳能.尼康相机照的照片是自带的,但我的奥林巴 ...
- php头像上传并裁剪支持3个尺寸
源码下载
- mongo .update
db.classes.update({"count":{$gt:20}},{$set:{"name":"c4"}},false,false) ...
- KStar ----BPM应用框架,K2 的新星
“KStar”是基于K2 BPM搭建的应用框架产品,将K2最佳实践方案以产品的形式呈现给用户,该框架面向SOA服务,便于二次开发和扩展,流程设计.用户组织.业务表单.流程管理.系统集成等开发工作,都按 ...
- 踏着前人的脚印学Hadoop——结构、重点
HDFS作为一个分布式文件系统,是所有这些项目的基础.分析好HDFS,有利于了解其他系统.由于Hadoop的HDFS和MapReduce是同一个项目,我们就把他们放在一块,进行分析. 如果把整个had ...
- 解决python version 2.7 required,which was not find in the registry
程序自动写注册表 http://www.vvivv.com/post-143.html 手工写 http://blog.csdn.net/baikaishui525/article/details/9 ...
- Windows Azure上搭建SSTP VPN
一.服务器设置 首先,从0开始,你需要创建一个新的VM.我选择Windows Server 2012 R2,所有步骤和创建普通VM都一样,但最后在防火墙设置里一定要打开TCP 443端口: 创建完成后 ...
- PAT 05-树8 Huffman Codes
以现在的生产力,是做不到一天一篇博客了.这题给我难得不行了,花了两天时间在PAT上还有测试点1没过,先写上吧.记录几个做题中的难点:1.本来比较WPL那块我是想用一个函数实现的,无奈我对传字符串数组无 ...
- C杂记
printf主要是为了便于取地址,默认将char,short变成了int,float变成了double:但scanf的时候,因为数据宽度的问题,必须区分%f和%lf. memset 是字符串操作函数: ...
- 解决:HotSeat短信图标提醒有误
[操作步骤]正常收发短信.彩信. [测试结果]所有短信均已阅读,但在HOME界面的短信图标仍提示有一条短信未读.重启后仍存在. 经过分析,导致该情况的主要原因为当彩信已读的时候,launcher中进行 ...