CSDN论坛 > Delphi > VCL组件开发及应用

在delphi里,数组变量是不是也就是指向该数组首地址啊? [问题点数:50分,结帖人seashoreboy]

Bbs1
本版专家分:15
结帖率 100%
CSDN今日推荐
Bbs6
本版专家分:5579
Bbs4
本版专家分:1985
Bbs7
本版专家分:16166
Bbs6
本版专家分:5819
Bbs1
本版专家分:4
Bbs2
本版专家分:336
Bbs2
本版专家分:319
Bbs3
本版专家分:912
Bbs6
本版专家分:5819
Bbs6
本版专家分:5579
Bbs7
本版专家分:13385
匿名用户不能发表回复!
其他相关推荐
C/C++拾遗(一):关于数组的指针和数组元素首地址的一道经典题
代码如下:#include int main(void) { int a[5] = {1, 2, 3, 4, 5}; int *ptr = (int *)(&a+1); int *p1 = a; int *p2 = &a[0]; int *p3 = (int *)(&a); if(p1 == p2){ printf("p1 == p2\n"); }else{ pr
数组指针和数组首地址
下面代码会输出什么() 1 2 3 4 5 6 int main(int argc, char **argv) {     int a[4] = {1, 2, 3, 4};     int *ptr = (int *)(&a + 1);     printf("%d", *(ptr - 1)); }
结构体类型的变量名并不能直接当作地址使用,这一点和基本数据类型相同。(修改版)
有了前面两篇的基础,下面正式开扒变量名和内存的关系,先看一段大家很熟悉的代码:   int i;  scanf_s("%d", &i);   int i;,在这一句就为i分配了内存(但尚未对这块内存进行初始化),所以可以通过&i直接使用这块内存。赋值就更不用说啦,i = 3;。   变量名i,是为方便编程人员使用,是这块内存的别名,指代到块内存,对编程人员i代表这块内存中存储的值(实
C语言指向结构体数组的指针
指针变量可以指向一个结构数组,这时结构指针变量的值是整个结构数组的首地址。结构指针变量也可指向结构数组的一个元素,这时结构指针变量的值是该结构数组元素的首地址。 设ps为指向结构数组的指针变量,则ps也指向该结构数组的0号元素,ps+1指向1号元素,ps+i则指向i号元素。这与普通数组的情况是一致的。 【例11-6】用指针变量输出结构数组。 struct stu{ in
指针 数组 函数 傻傻分不清楚
在C语言中,数组和指针的关系非常密切,我们可以通过指针来实现数组下标能实现的任何功能,而且指针有时候执行速度更快!!数组指针 int a[10];//这是一个由10个数组元素组成的集合,a[i]表示数组第i个元素。 int *p;//指向整型对象的指针 p=&a[0];//指针p指向数组a的第0个元素,p的值为数组a[0]的地址。 //如果p指向数组a中的某个元素,p+1就是指向下
C++,二维数组与指针,二维数组名是不是首地址?
答: 是首地址,是数组的首地址,虽然值等于第一个元素的地址,但是不代表元素的地址. 1. 数组名都是地址常量,都是首地址,可以直接付给指针,但是一维数组和二维数组名 赋予指针时有点不一样. 2.数组名不是指针,它仅仅是个 地址常量 3. 一维数组的数组名 直接付给指针, 如 int a[3]; int *p=a; 4. 二维数组名 直接赋给指针 就错了... 如 int a[3][4];
C语言二维数组的指针及首地址问题
若arr是一维数组名,我们知道*arr就是arr[0],就是*(arr+0)。因为arr是数组的首地址,*arr就是取首地址所指元素,就是数组的第一个元素。 同样的道理,arr是二维数组名时,*arr也是取arr的第一个元素,但是此时arr所指的元素是一个一维数组,所以,实际上arr所指元素是一维数组的首地址。 就按arr[3][4]这个例子来看:3行4列数组arr可以理解为arr[0],ar
strcmp函数只能对字符指针(变化的地址)或数组名(固定的地址)进行比较asc2码
很不错的网址:http://www.cplusplus.com/ 1、strcmp函数的功能是比较str1和str2这两个字符串的大小,规则是从左往右比较两个字符串对应位置的ASC2码值的大小,两个对应位上的字符不相同时,或者遇到字符串结束符(\0),则返回结果。       当str1str2时,返回正数。 2、以下做法是错误的,因为strcmp的参数必须是char *类型的,而a,a[0
数组和字符数组首地址的输出
char *p;int  *p1;int  a[10]={1,2,3,4,5,6,7,8,9,0};char str[]="mengfan";p=str;p1=a; printf( "%x" , p);   /*输出的是地址*/printf("%s",p);   /*输出的是字符串mengfan*/printf("%x",p1);输出的是地址printf("%s",p1);    /*输出的是字符
C语言定义数组起始地址对齐方式(IAR C99 Kinetis K66)
前言前几天,主管找我问关于定义变量起始地址对齐方式的问题。下面介绍一下问题:上位机生成了一个参数数组 char para[36541] = {…} ;数组比较大,已经内建好了结构体,只要按照指针指到头部地址即可正常读取出来,但是由于处理器读取int 或者 float 数据类型比较要求数据地址是四字节对齐的,而我们这个数组存放在内存中是以两个字节对齐的,这就导致了CPU无法读取数据并死机在了读取flo
关闭