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

c语言数组与指针的区别

03月06日 编辑 39baobao.com

[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...+阅读

int(*p)[4],这个就是行指针 这种类型的指针p是指向一个一维数组,这个一维数组包含4个整形元素 但是 int a[4];p=a; 这种方式却是不对的 因为p只能指向一个整型的一维数组,不能指向一个整型数据,a所指向的正是a[0],是个整型数; 实际上int(*p)[4]这种类型的指针是用于多维数组中的,比如定义一个二维数组int b[3][4],就可以这样赋值p=&b[0],使p指向一维数组b[0],而且p的增减是以一维数组的长度为单位的,比如p+1指向的就是b[1]了int *p[4]这个是指针数组了,首先弄明白这个是数组,里面存放的是指针也就是地址,这个地址所指向的是一个整型数据,你可以把p[0],p[1]....当作一个个的指针变量来使用我学的时候也弄了半天才搞明白,这是我总结的,你多看看指针那关于多维数组与指针的一节,做些练习自己验证几次就容易弄明白了 .希望能够帮助你 ^_^ 也希望能够选为最佳答案!...

C中数组和指针的异同

“在表达式中,数组名总是被转换为指向该数组第一个元素的指针“在C语言中,数组名是一个左值,不是指针,之所以说“在表达式中,数组名总是被转换为指向该数组第一个元素的指针“是因为你可以使用用于操作指针的解引用符号"*"对数组名进行操作,或者你可以将一个数组名赋值给一个指针变量。但实际上对数组名的操作和对指针的操作在汇编层是不同的。数组int array[10]:执行表达式 X = array[3]只需要两条汇编语句:mov -0x10(%ebp),%eax /* -0x10(%ebp)是array[3]的内容 */mov %eax,-0x8(%ebp) /* %ebp - 0x8 是X的地址 */同样的操作,看指针是什么情况。指针int *array_p = array;执行表达式 X = array_p[3]会被编译器翻译成"X = *(array_p + 3);",看它的汇编代码:mov -0x4(%ebp),%eax /* %ebp - 0x4 是array_p的左值,它存放了数组array的第一个元素的地址* 即array的值*/add $0xc,%eax /* 将数组0元素地址+0xc得到第三个元素的地址 */mov (%eax),%eax /* 取出这个值 */mov %eax,-0x8(%ebp) /* 将array[3]的(右)值存储到X中 */...

C语言中指针和数组的区别和联系

区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针。所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以就会觉得指针和数组名很像,但是必须要注意的是,数组名只是指针中的一种,它是指针中只指向栈区的且指针的移动范围是有限的,即数组长度。而且数组在定义之初就已经有了自己的内存,一般的指针如果未指向某一个内存块时,它是没有自己的内存的,即所谓的野指针。 联系:如上面所说,数组只是定义在栈区的一个连续变量,它的首地址就是一个指针。 总结:不仅数组有指针,所有变量都有指针,指针说白了就是内存中的地址,就像一个房间必须有一个房间号。

在C/C++语言中定义一个指针,就是在栈区开辟一个内存空间用来存放它指向的内存地址,然后给指针赋值,就是把地址值赋值给刚才开辟的内存空间,然后通过访问该内存中的地址值来间接访问该地址下存放的数据。如果该地址值指向的是一块静态存储区,如字符串常量等,当然就不可以修改指向的内容啦。 经验之谈,楼楼加分啊

以下为关联文档:

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

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语言指针数组char *name[4];是一个指针数组,每个成员name[i]都是一个字符指针。 printf函数打印字符串时传的参数就是一个字符指针。 所有printf("%s", name[4]); --针对你的问题 printf(“%...

C语言数组指针给 一转身两辈子 一段第三题更好的代码: #include<stdio.h> int g_lpiArray[10]; void Search(int x) { long i=0; int *lpiTem=g_lpiArray; for(;i<10;i++,lpiTem++) { if(*...

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语言数组指针函数结合实验#include"stdio.h" bool fun_1(char ch[]) { char *p1=ch,*p2=ch; while(*p2){p2++;} p2--; while(p1<p2) { if(*p1!=*p2)return 0; p1++; p2--; } return 1; } int fun_2(int...

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

C语言的指针数组# includevoid main() { void exchange(char *name[],int n); char * name[]={"January","February","March","April","May","June","July","August","September","October","November","December"};...

c语言字符数组字符指针 sizeof strlen的区别sizeof()操作符返回对象/类型所占空间大小(字节为单位),类型为size_t(看头文件可以知道就是int,只不过被typedef了一下标示用途而已)。常见用法有sizeof(变量)和sizeof(类型),具体实例代...

推荐阅读
图文推荐