关于c语言的指针和数组!
[code]#include
基本解释 1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。 2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。 3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 问题:指针与数组 听说...
我看的是《c语言程序设计》pdf文档 [例 5-1] 将数字 0 到 9 装入一个整型数组 main( ) { int x[10]; /* 定义包含 1 0 个整型数的数组,引用为 x [ 0 ] ,x [ 1 ] . . . x [ 9 ] * / int t ; for (t=0; t<10;++t) x[t]=t; } 我认为t=0再加1后 x[1]=1不会得到x[0]=0的结果。 感觉他的例题错了,请指教。 这段时间我会在这里和大家一起学习,先谢谢大家对我的帮助。
c语言中数组下标越界的隐患
大家都知道,在c语言中一般是不会检查数组的下标范围的,这样的好处是给了程序员很大的灵活性,更宜于写出高效的代码。如果定义一个数组a[n],其有效下标范围为0 - (n-1),但你要引用下标n,编译器一般是不提示错误的,但是这样也潜在的隐含着一些隐患。
请看如下语句:(32位机器上)
#include
void fun2(char *pa) { printf("%x %x %x %x\n", pa, &pa, &(pa[0]), &(pa[1])); printf("%x %x %x %x\n", pa, &pa, &(pa[0]), ++pa); printf("%x", pa); } char ga[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'}; int main() { printf("%x %x %x %x\n", ga, &ga, &(ga[0]), &(ga[1])); fun2(ga); return 0; } ----------------------------------------- 上面代码中,fun2 中第一...
c里是否有类似php中array_key_exists的函数,功能是检查否则数组中是否存在这个键名,查了google和百度后,都是php的,可能c里就没有这个名字的函数,是否有相近功能的其他函数? http://www.google.com/search?q=c+array_key_exists&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:zh-cN:official&client=firefox http://www.baidu.com/s?ie=gb2312&bs=c+array_key_exists&sr=&z=&cl=3&f=8&wd=c+array_key_exists&ct=0 如果没有的话是...
A TUTORIAL ON POINTERS AND ARRAYS IN c c语言指针和数组宝典 by Ted Jensen Version 0.1 This material is hereby placed in the public domain. 翻译:针尖骑士 BLOG: chinacpp.tianya.cn 日期:2004.10.10 完成日期: TABLE OF cONTENTS ========================================= 目录: ------------------...
char str1[10]="china"; char str2[10]; 要把str1的值附给str2, 只能用strcpy(str2,str1) 不能用str2=str1吧? 还有不可以使用str2="china"对str2进行附值吧? 可以用str2[]="china"进行附值吗? 在使用strcpy(str2,str1)时,str1和str2对应的地址应该是不一样的吧?
我在一些资料中看到有的数组定义的长度为0,比如 DIR_ENTRY_INFO temp_DirectoryEntries[0]; 请问这样定义是什么意思,我搞不明白,这样的定义有意义吗?