解析sizeof, strlen, 指针以及数组作为函数参数的应用

代码如下所示:


代码如下:

typedef struct st_test
{
 int id;
 char *pName;
 char class[10];
}Student;
void fn(Student *pStud) {
 pStud->id = 10;
 pStud->pName = "Tom Simith";
 strcpy(pStud->class, "Class 1");
 printf("sizeof(pStud) = %d /n", sizeof(pStud));     // sizeof(pStud) = 4
 printf("sizeof(pStud->id) = %d /n", sizeof(pStud->id));   // sizeof(pStud->id) = 4
 printf("id:%d/n", pStud->id);         // id:10
 printf("sizeof(pStud->pName) = %d /n", sizeof(pStud->pName)); // sizeof(pStud->pName) = 4
 printf("strlen(pStud->pName) = %d /n", strlen(pStud->pName)); // strlen(pStud->pName) = 10
 printf("Name:%s/n", pStud->pName);        // Name:Tom Simith
 printf("sizeof(pStud->class) = %d /n", sizeof(pStud->class)); // sizeof(pStud->class) = 10
 printf("strlen(pStud->class) = %d /n", strlen(pStud->class)); // strlen(pStud->class) = 7
 printf("class:%s/n", pStud->class);        // class:Class 1
}
void fnArray(char arr[]) {
 printf("arr:%s/n", arr);       // arr:Hello
 printf("sizeof(arr) = %d /n", sizeof(arr));   // sizeof(arr) = 4 The length of pointer
 printf("strlen(arr) = %d /n", strlen(arr));   // strlen(arr) = 5 The length of array
}
int main(int argc, char **argv)
{
 Student stud;
 fn(&stud);

fnArray("Hello");
    return 0;
}

(0)

相关推荐

  • 详解C语言中free()函数与getpagesize()函数的使用

    C语言free()函数:释放动态分配的内存空间 头文件: #include <stdlib.h> free() 函数用来释放动态分配的内存空间,其原型为: void free (void* ptr); free() 可以释放由 malloc().calloc().realloc() 分配的内存空间,以便其他程序再次使用. [参数说明]ptr 为将要释放的内存空间的地址. free() 只能释放动态分配的内存空间,并不能释放任意的内存.下面的写法是错误的: int a[10]; // ... f

  • 不错的用resizeTo和moveTo两个函数实现窗口的“打乒乓球”效果

    看js事件时看到了resizeTo和moveTo两个函数及window.screen.height/window.screen.width等几个属性突然想到的这个效果,花了偶一点功夫终于写出来了,感觉挺好玩,呵呵... window.resizeTo(300,300); window.moveTo(0,0); var x=0,y=0; var h=window.screen.Height; var w=window.screen.Width; var mx=1,my=1; function mo

  • C语言中sizeof()与strlen()函数的使用入门及对比

    sizeof()函数 1,是什么?     sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换.虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事. 2,有什么用?     sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位. 3,怎么用?     sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间.当对变量用的时

  • php检测数组长度函数sizeof与count用法

    本文实例讲述了php检测数组长度函数sizeof与count用法.分享给大家供大家参考.具体如下: 在php检测数组长度的函数有sizeof count 下面看个简单实例: 复制代码 代码如下: $colorlist = array("apple"=>"red", "grass"=>"green","sky"=>"blue","night"=>

  • 简述Matlab中size()函数的用法

    size()函数用来获取矩阵的行数和列数. (1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数. (2)[r,c]=size(A), 当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c. (3)size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数.其中r=size(A,1)该语句返回的时矩阵A的行数, c=si

  • Php Image Resize图片大小调整的函数代码

    复制代码 代码如下: function my_image_resize($src_file, $dst_file, $dst_width=32, $dst_height=32) { if($dst_width <1 || $dst_height <1) { echo "params width or height error !"; exit(); } if(!file_exists($src_file)) { echo $src_file . " is not

  • 解析sizeof, strlen, 指针以及数组作为函数参数的应用

    代码如下所示: 复制代码 代码如下: typedef struct st_test{ int id; char *pName; char class[10];}Student;void fn(Student *pStud) { pStud->id = 10; pStud->pName = "Tom Simith"; strcpy(pStud->class, "Class 1"); printf("sizeof(pStud) = %d /n

  • 详解C++编程中用数组名作函数参数的方法

    C++数组的概念 概括地说:数组是有序数据的集合.要寻找一个数组中的某一个元素必须给出两个要素,即数组名和下标.数组名和下标惟一地标识一个数组中的一个元素. 数组是有类型属性的.同一数组中的每一个元素都必须属于同一数据类型.一个数组在内存中占一片连续的存储单元.如果有一个整型数组a,假设数组的起始地址为2000,则该数组在内存中的存储情况如图所示. 引入数组就不需要在程序中定义大量的变量,大大减少程序中变量的数量,使程序精炼,而且数组含义清楚,使用方便,明确地反映了数据间的联系.许多好的算法都与

  • C语言之把数组名作函数参数的四种情况说明

    目录 把数组名作函数参数的四种情况 思路 实参与形参的对应关系有以下四种情况 我们来看代码 一般函数作参数和数组名作参数区别 一般函数作参数 数组名作函数参数 把数组名作函数参数的四种情况 如果想要通过函数调用得到n个要改变的值 思路 ①在主函数中设n个变量,用n个指针变量指向它们 ②设计一个函数,有n个指针形参,在这个函数中改变这n个形参所指向的值 ③在主函数中调用这个函数,在调用时将n个指针变量做为实参,将它们的地址传给该函数的形参 ④在执行该函数的过程中,通过形参指针变量,改变它们所指向的

  • shell 使用数组作为函数参数的方法(详解)

    因工作需要,需要使用shell开发一些小工具,当使用数组作为函数参数时,发现只能传递数组的第一个元素,数组后面的元素不能传递到函数内. #!/bin/bash function showArr(){ arr=$1 for i in ${arr[*]}; do echo $i done } regions=("GZ" "SH" "BJ") showArr $regions exit 0 把代码保存为test.sh后执行,只输出了第一个元素. ./t

  • 关于数组做函数参数的问题集合汇总

    首先是数组元素作为函数的实参,这和直接用多个变量作为函数的实参在用法上没有什么差别. 作为例子的代码: 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int max(int a,int b);        int a[2],m;        a[0]=1;        a[1]=2; m=max(a[0],a[1]); cout<<m;   return 0;  }int max(int a,int

  • C语言中二维数组作为函数参数来传递的三种方法

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char str[ ][5] ) { int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n", i, str[i]); } void main() { char* p[3]; char str[][5] = {"abc&quo

  • C语言 指针变量作为函数参数详解

    在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁. 像数组.字符串.动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传入函数内部,只能传递它们的指针,在函数内部通过指针来影响这些数据集合. 有的时候,对于整数.小数.字符等基本类型数据的操作也必须要借助指针,一个典型的例子就是交换两个变量的值. 有些初学者可能会使用

  • C语言零基础讲解指针和数组

    目录 一.指针和数组分析-上 1.数组的本质 2.指针的运算 3.指针的比较 4.小结 二.指针与数组分析-下 1.数组的访问方式 2.下标形式 VS 指针形式 3.a 和 &a 的区别 4.数组参数 5.小结 一.指针和数组分析-上 1.数组的本质 数组是一段连续的内存空间 数组的空间大小为 sizeof(array_type) * array_size 数组名可看做指向数组第一个元素的常量指针 下面看一段代码: #include <stdio.h> int main() { int

  • c++将数组名作为函数参数对数组元素进行相应的运算

    用数组名做函数参数与用数组元素作实参有几点不同: (1)用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的.因此,并不要求函数的形参也是下标变量.换句话说,对数组元素的处理是按普通变量对待的.用数组名作函数参数时,则要求形参和相应的实参都必须是类型相同的数组,都必须有明确的数组说明.当形参和实参两者类型不一致时,将会发生错误. (2)用普通变量或下标变量作函数参数时,形参变量和实参变量都是由编译系统分配的两个不同的内存单元.

  • C语言sizeof和strlen的指针和数组面试题详解

    目录 一.概念 sizeof: strlen: 二.例题及解析 2.1 一维数组 2.2 字符数组 2.3 二维数组 三.总结 一.概念 sizeof: sizeof操作符的结果类型为size_t,(它在头文件用typedfe定义为unsigned int类型),计算的是分配空间的实际字节数.sizeof是运算符,可以以类型.函数.做参数 . strlen: strlen结果类型也为size_t(size_t strlen( const char *string )),但strlen是计算的空间

随机推荐