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{ ...
随机推荐
- EntityFramework查询oracle数据库时报ora-12704: character set mismatch
1.这段linq,执行期间报ora-12704:character set mismatch错误. var query = from m in ctx.MENU where (m.SUPER_MENU ...
- C++-dynamic_cast的用处
主要用来在没有实现文件,只有头文件的情况下,添加派生类的功能,如下例给programmer加奖金. 注意:dynamic_cast不能用于没有virtual函数的类 ///////////////// ...
- Oracle常用的函数
1.常用的函数分为五大类: 字符函数.数字和日期函数.数字函数.转换函数.混合函数 2.字符函数 字符函数主要用于修改字符列.这些函数接受字符输入,返回字符或数字值.Oracle 提供的一些字符函数如 ...
- WordPress 4.0 “Benny” 正式发布
http://wordpress.org/news/2014/09/benny/Highlights and What’s New:http://codex.wordpress.org/Version ...
- 记录一些容易忘记的属性 -- UIImageView
UIImage *image = [UIImage imageNamed:@"back2.jpg"]; //创建一个图片对象,这个方法如果图片名称相同,不管我们调用多少次,得到的 ...
- Javascript 基础--JS函数(三)
一.基本概念:未完成某一个功能的代码(语句,指令)的集合. 二.函数的调用方式: 2.1.函数名(传递参数1,传递参数2) 基本语法 function 函数名(参数列表){ //代码; retur ...
- 使用HttpOnly提升Cookie安全性
在介绍HttpOnly之前,我想跟大家聊聊Cookie及XSS. 随着B/S的普及,我们平时上网都是依赖于http协议完成,而Http是无状态的,即同一个会话的连续两个请求互相不了解,他们由最 ...
- 2016 -1 - 3 省市联动demo
#import "ViewController.h" #import "CZProvinces.h" @interface ViewController ()& ...
- maven3在eclipse3.4.2中创建java web项目
学习maven时参考的一些的博客地址:http://www.cnblogs.com/fnng/archive/2011/12/16/2290587.htmlhttp://sarin.iteye.com ...
- RabbitMQ、Redis
进程QUEUE,可以是父进程与子进程间进行交互,也可以是同属于一个父进程的子进程间的交互:如果要实现进程A与进程B之间的通信,就需要借助一个中间进程了,我们习惯称为消息队列. QQ无法直接与WORD通 ...