c语言(1)
来源:互联网 发布:卖淘宝号的网站 编辑:程序博客网 时间:2024/05/18 01:03
- 关于指向数组的指针
void main(){ int data[]={1,2,3,4}; int *p1 = data; int *p2 = &data; int i; for(i=0;i<4;i++) { printf("%d ",p1++); printf("%d ",p2++); printf("%d ",*p1++); printf("%d ",*p2++); }}
可见&data等同于data
而下个程序则表明由于*data==data[0],所以data==&data[0]
void main(){ int data[]={1}; printf("%x ",data[0]); printf("%x ",&data[0]); printf("%x ",&data); printf("%x ",data); }
- 关于函数形参的问题
有以下两个小程序:
void test1(int arg[]){printf("%d\n",arg[0]);}void test2(int *arg){printf("%d\n",arg[0]);}void main(){int a[10]={0,1,2,3,4,5,6,7,8,9} ;test1(a[10]);test1(a);test2(a[10]);test2(a);}/*结果为1703828017038280*/
可见形参的数组就是指向首元素的指针,值得注意的是c语言中数组不能作为参数传递,但可以通过指针实现函数间对数组的操作。
- 一个例子
findValue查找函数:查询数组中是否有某一特定的整型参数,若有返还1 否则返回0
int findValue(int arr[],int arraySize,int value){ int i; for(i=0;i<arraySize;i++) { if(arr[i]==value) {printf("find it ");return 1;} } printf("dnt find "); return 0;}void main(){ int a[10]={0,1,2,3,4,5,6,7,8,9}; printf("%d\n",findValue(a,10,5)); printf("%d\n",findValue(a,10,100));}/*输出结果find it 1dnt find 0*/
- 关于字符串数组
字符串的本质就是数组,需要注意的是”123”相当于{‘1’,’2’,’3’,’\0’},程序如下:
void main(){ char a1[]={'n','e','\0'}; char a2[]="ne"; printf("a1:%s size:%d\n",a1,sizeof(a1)); printf("a2:%s size:%d\n",a2,sizeof(a2));}/* 输出结果为a1:ne size:3a2:ne size:3 */
- 关于指针数组
可以这样保存字符串:
char *animal={"dog","fish","cat","pig","goose"};
则有animal[0]=”dog”,animal[1]=”fish”…….
下面是一个关于指针数组的小程序:
void main(){ char *animal[]={"dog","fish","cat","pig","goose"}; int i; printf("该指针数组所在内存为4*5=%d\n",sizeof(animal)); for(i=0;i<sizeof(animal)/sizeof(animal[0]);i++) { printf("%s\n",animal[i]); }}/*运行结果为:该指针数组所在内存为4*5=20dogfishcatpiggoose*/
在内存中相当于
[‘d’,’o’,’g’,’\0’];
[‘f’,’i’,’s’,’h’,’\0’];
……
可见animal是一个存储了5个指针的数组,每个指针在内存中占4个字节
还有一种方式来存储多个字符串:
int animal[][6]={"dog","fish","cat","pig","goose"};
在内存中相当于
[‘d’,’o’,’g’,’\0’,’\0’,’\0’];
[‘f’,’i’,’s’,’h’,’\0’,’\0’];
……
显然这种存储方式比上一种要死板一些
阅读全文
1 0
- c语言(1)
- C语言(Head First C)-1:C语言入门
- C语言入门(1)——C语言概述
- c语言修炼(1)
- C语言基础知识(1)
- C语言-指针(1)
- C语言-指针(1)
- 孔乙己学C语言(1)
- C语言-学习心得(1)
- C语言笔记(1)
- C语言杂记(1)
- C语言学习(1)
- C语言笔记(1)
- c语言1(基础)
- 关于c语言(1)
- C语言问题(1)
- C语言总结(1)
- C语言基础(1)
- 读写锁
- 使用直方图及其部分空间特性的模糊对比
- Git查看、删除、重命名远程分支和tag
- bat文件命令行去除变量的空格
- Kotlin 双冒号 :: 使用
- c语言(1)
- QT中如何在QListWidget中添加自定义的 tiem
- 自定义ExpandableListView分割线
- windows命令合集
- 如何在django下建立多个app
- 开发经验
- js_String
- intend启动系统的组件
- sql server 连接 oracle 总结