三九宝宝网宝宝教育教学论文

C中数组和指针到底是否相同

03月06日 编辑 39baobao.com

[C语言用指针在数组中查找特定值]#include<stdio.h> int find(int *p,int n,int b) { int i=0; while(i<n) { if(*p++==b) return i; i++; } return -1; } int main() { int k; int a[]={1,2,3,4,5}; int b;...+阅读

初学C,往往会听到一种说法,就是"数组和指针是一样的" 这是一种非常危险的说法,并不完全正确 要完全说清楚这个问题,可能篇幅还不够 我说一下两者最大的区别 从char a[5]取a[2]和char *b 取b[2]来讲 两者取出的都收hello中的第三个字符l 但是a[2]是直接用a中保存的地址+2得到的地址,取内容得到的 b[2]是对b的地址取内容,以内容作为地址,然后+2,然后再取内容得到的 两者获取的途径不一样 两者在某些环境下又是可以等同的,这里不细说 如果想彻底了解这个问题,建议买几本书看 比如,

c数组和指针

指针的数组:int *paz[2] 数组的指针:int (*pz)[2] 指针的数组:数组指针,数组的内容是指针,即paz[i]是一个指针,int *paz[2] 可以这样来看, #define PAZ paz[2] int *PAZ; 这样应该就理解了指针的数组是啥意思了吧? 数组的指针:指针是指向一个数组的指针,而int (*pz)[2] 也可以分开来理解: #define PZ (*pz) int PZ[2]; 下面可以在使用中进行区别, 看两个不同的初始化方法: int p1 = 1, p2 = 2; int *paz[2] = {&p1, &p2}; //每个元素都是一个指针 int a[] = {0,1}; int (*pz)[2] = &a; //这里*pz 就相当于阿a,相当于进行#define a *pz这样的宏定义替换 相互间的拷贝: paz[1] = &(*pz)[1]; (*pz)[0] = *paz[0];

以下为关联文档:

c语言中指针数组和字符串数组的区别高手请进!#include "stdio.h" #include "string.h" void shellsort(char v[][10], int n); void writeline(char linp[][10],int n); main() { char line[][10]={"C++","Fortran","Basic","Pasca...

C语言字符指针和字符数组的区别两个用法差不多,唯一的区别在于字符数组的值在程序运行过程中是可以修改的,但是字符指针的值在运行过程中是不能修改的。 #include using namespace std; int main() { char *...

C语言中的字符指针数组排序完整程序如下: #include<stdio.h> void sort_string(char **p,int n){ int i,j; char s[80]; for (i=0;i<n-1;i++){ for (j=i+1;j<n;j++){ if (strcmp(*(p+i),*(p+j))<0){ st...

C语言数组指针#include #define STU 3 #define GRA 4 void search(float gra[][GRA],int stu); void print(float gra[][GRA],int i); int main(void) { float gra[STU][GRA] = {0}; int...

C语言函数数组指针利用指针求一维数组的数据元素之和#include<stdio.h> int main() { int array[10]; int i, *p; for(p=array, i=0; i<10; i++) scanf("%d", p+i); for(p=array, i=0; i<10; i++) printf("%d ", *(p+i)); return 0...

c语言中的指针数组这里的a是二维数组名,如a[2][3] 那么a[0]就是一维数组a[0]的0号元素的首地址. 对二维数组来说,a[0]表示的是地址. 同理,a[1]也是表示地址. 如果一维数组的话a[2],那么a[0]就是值...

一个C语言中指针型字符数组的问题<p>char *p=“AAA”; //初始化一个指向字符串的指针(指向字符串其实是指向字符串的第一个字符)</p> <p> </p> <p&gt;注意,上面说的是指向字符串常量!</p> <p> </p> <p>p[0]='B'; //...

c语言中的指针数组问题*p+i,是先执行*p,然后再加i 如int a[2]={1,2}; int *p; p=a;//p指向数组a,即指向数组a的第一个元素,即1 那么*p=1;*p+1=1+1=2;*p+3=1+3=4; *p[i],p[i]本身就是一个指针,*p[i]取p[...

c语言问题指针数组c语言问题指针数组,C语言用指针数组和:这是由于函数参数及运算符的计算顺序导致的,后置++运算符优先级大于*运算符,则表示此后置++运算是优先于*进行计算的,而后置++运算符是...

推荐阅读
图文推荐