c语言,数组,数组名表示首地址

问题描述

c语言,数组,数组名表示首地址
c语言中为什么数组名a和&a的输出结果是一样的,a不是本来就是地址吗

解决方案

应该是a和&a都被编译器解释成数组的首地址了。

解决方案二:
你说的没错,a是表示数组首元素的地址,但是 你要知道它是一个指针常量,即 一个不能被更改的值。对于printf(""%dn""a);和printf(""%dn""&a);,输出的格式是 %d所以有没有&编译器都不做相应,所以输出的一样。类似还有char b[]=""abc"";,输出printf(""%dn""b); printf(""%dn""&b);一样。

时间: 2024-12-03 08:15:15

c语言,数组,数组名表示首地址的相关文章

图片-C语言 a[0] 数组首地址只能给指针赋值吗 (a代表某数组)

问题描述 C语言 a[0] 数组首地址只能给指针赋值吗 (a代表某数组) 如果不是的话,为什么下面的代码会出错: 解决方案 因为类型不同,min是int类型,而&a[0]是int * 类型 解决方案二: 把 int mix=&a[0]; int max=&a[0]; 改成 把 int *mix=&a[0]; int *max=&a[0]; 就好了.另外,单词拼错了,最小值是min不是mix. 解决方案三: a[0]是值,&a[0]是数组首地址,加&报

数组首地址取地址

一.问题来由 普通指针可被修改导致地址偏移: #include <iostream> using namespace std; int main(int argc,char *argv[]) { int a = 6; int *p = &a; //p存放一个地址,pp存放p的地址,上面的代码可以让p存放的地址偏移 cout<<&a<<endl; int *pp = (int *)&p; cout<<p<<endl; (*p

一个关于数组首地址的问题

问题描述 一个关于数组首地址的问题 1C #define _CRT_SECURE_NO_WARNINGS#include ""stdlib.h""#include ""stdio.h""#include ""string.h""int main(){ int buf1[100] = { 0 }; int buf2[100] = { 0 }; int *p1 = buf1; int *p2

我想问一下c语言里面数组每个字符的地址是怎么分类的

问题描述 我想问一下c语言里面数组每个字符的地址是怎么分类的 我想问一下 上面那个ch1ch2 ch3 为什么是从30 38 40开始的???ch2明明这么多字符可是他只占用了38 39??这部分东西学校还没讲,,,我想了解一下 上网查了一下感觉还是不太懂 希望有人能详细解释一下 另外想问一下 这三个数组占用的空间是连续的吗 解决方案 这个要看你的代码,你要注意0x40-0x38=8而不是2,是16进制.编译器有时候会按照4字节对齐变量,也就是你分配1~3个字节都是4字节,4~7字节都是8字节,

C语言柔性数组

结构中最后一个元素允许是未知大小的数组,这个数组就是柔性数组.但结构中的柔性数组前面必须至少一个其他成员,柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存.包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小以适应柔性数组的预期大小.柔性数组到底如何使用? 欢迎关注我的个人博客:www.wuyudong.com, 更多精彩文章与您分享 不完整类型 C和C++对于不完整类型的定义是一样的,不完整类型是这样一种类型,

c语言字符数组与字符串的使用详解_C 语言

1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串在c语言中,将字符串作为字符数组来处理.(c++中不是)在实际应用

希望大神帮助下-关于C语言中数组的输出,求…………

问题描述 关于C语言中数组的输出,求---- #include int main() {int i,a[10]; for(i=1;i<=10;i++) a[i]=i; printf("%d ",a); return 0; } 怎么才可以输出这样形式呢? 12345678910 为什么老是输出 1244960 这种形式呢?谢谢! } 解决方案 printf("%d ",a[i]); C语言中的数组输出不能整体输出,的用for循环依次输出每一个元素 数组名就像一个

C语言一维数组入门教程

一.一维数组 1.定义一个一维数组: (1)格式:存储类别   类型标识符  数组名标识符[常量表达式] (2)例子:static int a[10] (3)注意:定义数组时数组的元素必须是常量,不能是变量,例如int n=3;int a[n] 这是不对的. 2.对数组的引用: (1)引用形式:数组名[下标] 例如 a[2]  ( 2) 注意数组的下标是由0开始,如a[3] 表示有三个元素 分别是a[0],a[1] ,a[2] .如果你用a[3]访问第三个元素是错误的. (3)对数组的遍历:如果

C语言柔性数组实例详解_C 语言

本文实例分析了C语言柔性数组的概念及用法,对于进一步学习C程序设计有一定的借鉴价值.分享给大家供大家参考.具体如下: 一般来说,结构中最后一个元素允许是未知大小的数组,这个数组就是柔性数组.但结构中的柔性数组前面必须至少一个其他成员,柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存.包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小以适应柔性数组的预期大小.柔性数组到底如何使用? 不完整类型 C和C++对于不完