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{ ...
随机推荐
- Javascript——Math对象
Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用其所有属性和方法.这是它与Date,String对象的区别 Math 对象属性 Math 对象方法
- C- struct的使用
数组是二等公民,不能进行整体赋值,或者参数传递,或者作为返回值. But!如果封装在struct内部,就完全不一样了 #include <iostream> using namespace ...
- 8种主要排序算法的C#实现
作者:胖鸟低飞 出处:http://www.cnblogs.com/fatbird/ 简介 排序算法是我们编程中遇到的最多的算法.目前主流的算法有8种. 平均时间复杂度从高到低依次是: 冒泡排序(o( ...
- Unity4.3.3激活
Unity4.X Win版本的破解方法: <ignore_js_op> 1.安装unity4.X,一路按提示下一步,要断网,直到激活运行软件后再联网2.将Unity 4.x Pro Pat ...
- [__NSCFString absoluteURL]错误的解决方案
Xcode提醒错误: -[__NSCFString absoluteURL]: unrecognized selector sent to instance 0x8c4d3a0 *** Termina ...
- Python计算文件MD5值
import hashlib def fileMD5(filename): m = hashlib.md5() #md5计算 #m = hashlib.sha1() #sha1计算 #m = hash ...
- (function($){...})(jQuery) 含义
最近在项目js文件末端中发现这样的代码,对于前端技术比较薄弱的我,着实还是有点晕,好在查阅到了相关资料,现解释如下: (function($){ $.plugin = new org.plugin. ...
- BZOJ 3439 Kpm的MC密码
倒着建trie,然后主席树来求子树第k大. #include<iostream> #include<cstdio> #include<cstring> #inclu ...
- swift 闭包+嵌套函数+extension+单例+嵌套函数+??
//: Playground - noun: a place where people can play import UIKit //*******************嵌套函数********* ...
- HDU 4902 (线段树)
Problem Nice boat(HDU 4902) 题目大意 维护一个序列,两种操作. 第一种操作,将一段区间[l,r]赋值为x. 第二种操作,将一段区间[l,r]中大于等于x的数与x求gcd. ...