【c语言】sizeof里边放数组名,传首元素地址

// sizeof里边放数组名,传首元素地址

#include <stdio.h>

void example(char acHello[])
{
	printf("%d\n", sizeof(acHello));
	return 0;
}

int main()
{
	char acHello[] = "hello,tu_lun";
	example(acHello);
	return 0;
}

时间: 2024-10-29 19:09:49

【c语言】sizeof里边放数组名,传首元素地址的相关文章

C语言学习笔记 (004) - 数组名和数组首地址(转)

一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址.指针变量既然可以指向变量,当然也可以指向数组和数组元素(把数据起始地址或某一元素的地址放到一个指针变量中).所谓数组的指针是指数组的起始地址,数组元素的指针数组元素的地址. 这种指针变量的定义与以前介绍的指向变量的指针变量相同.应当注意,如果数组为int型,则指针变量亦应指向int型. C语言规定数组名代表数组的首地址,也就是第一个元素的地址.因此,下面两个语句等价: p=&a[0]: p=a: 注意数

C语言中一个字符数组里面的所有元素变成一个字符串

#include <string.h> int main() // 这里为了方便直接用main函数 {     char array[] = { 'h', 'e', 'l', 'l', 'o' };     /* 需要注意的是,这里没有终结符,故需要知道数组的 */     /* 大小(数组的大小是编译时常量)*/     char *dest_str; // 目标字符串          dest_str = (char *)malloc(sizeof(char) * (sizeof(arr

C语言的数组名和对数组名取地址

http://blog.csdn.net/zdcsky123/article/details/6517811 相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址.现在又这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地址,就是指针的指针,既二级指针嘛!当然这样的结论是错误的,不然这篇笔记也就没有意义了. 下面我们来逐步分析,下面是一段验证这个问题的代码 Code: #include<stdio.h> in

C语言——数组名、取数组首地址的区别(一)

目录: 1. 开篇 2. 论数组名array.&array的区别 3. array.&array的区别表现在什么地方 4. 讨论 5. 参考 1.开篇 很多博客和贴吧都有讨论这个话题,各有自己的表述方式,今天在他们的基础上我将继续试着以我自己理解的方式总结一下,欢迎大家的审阅和指评. 2.论数组名array.&array的区别——省政府和市政府的区别 例如: int array[5] = {0}; 总所周知,其中的&array是整个数组array的首地址,array是数组首

C语言中与指针相关问题——论数组名和数组名取地址的关系

这是由一道面试题联想到的一些问题,这里自己给做个小总结! 首先看看这道面试题: #include <stdio.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *pi = &a + 1; printf("%d, %d\n", *(a + 1), *(pi - 1)); return 0; } 答案是2, 5.至于是为什么,我后面说一下我自己的理解. 这里有个要注意的地方,以上代码在CodeBlock中会有个警告,但

C语言中指针和数组

C语言数组与指针的那些事儿 在C语言中,要说到哪一部分最难搞,首当其冲就是指针,指针永远是个让人又爱又恨的东西,用好了可以事半功倍,用不好,就会有改不完的bug和通不完的宵.但是程序员一般都有一种迷之自信,总认为自己是天选之人,明知山有虎,偏向虎山行,直到最后用C的人都要被指针虐一遍. 指针 首先,明确一个概念,指针是什么,一旦提到这个老生常谈且富有争议性的话题,那真是1000个人有1000种看法. 在国内的很多教材中,给出的定义一般就是"指针就是地址",从初步理解指针的角度来说,这种

C/C++小课之数组名是什么

我们今天讨论数组名是什么东西,理解它有助于我们进一步理解和使用指针. 因为它涉及到了内存地址. 问题 数组名是什么?含义是什么? 思路 前提 一个值+1之后的变化可以反映出它的意义/含义. 前提的证明 其实不证自明,计算机中就是这样的. 生活中 一个苹果+1,结果是两个,增加了一个苹果. 一箱苹果+1,结果是两箱,个数是2*每箱苹果数,增加了一箱苹果. 计算机中 int型变量的地址+1,增加了一个int的大小. double型变量的地址+1,增加了一个double的大小. 思路 根据前提,通过将

C语言之二维数组

二维数组及其指针 1 ) 在了解二维数组之前,我们先来了解一维数组及其指针 我们知道,一维数组中:数组名代表-->数组首元素的首地址    (千万不要认为是数组的首地址(&a),绝对不是) 在内存中,该代码的表现形式如下图:</span> #include<stdio.h>   {         int a[4];         int *p  = a;  //表明该指针指向了数组的首元素地址,当然也可以写为 int *p = &a[0];        

数组名的地址,和数组名取地址的讨论

这个问题的发现是在以下的代码中发现的: #include<stdio.h> int main() {     int arr[2]={1,2};     printf("%p",arr);     printf("%p",&arr);     return 0; } 在运行之后我们发现的数组名本身的地址和数组名内部存储的地址是完全一样的,我们把数组名理解为一个const的指针(数组名只能作为右值,而不是左值),而&arr到底是什么? 我尝