首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c语言中指针赋值问题,关于C语言指针赋值问题「建议收藏」

大家好,又见面了,我是你们朋友全栈君。 为方便各位小伙伴更好学习C语言,武林技术小编为此给大家整理了一批资料,供大家交流学习,下面就跟随武林技术频道编辑一起来先来看看关于C语言指针赋值问题。...:22: 警告: 赋值时将指针赋给整数,未作类型转换 test.c:23: 警告: 赋值时将指针赋给整数,未作类型转换 test.c:24: 警告: 赋值时将指针赋给整数,未作类型转换 test.c:25...= ‘/0’){ printf(“%c”, *p); printf(“%c”, *(p+1)); ++p; } } 在字模数组首地址赋值方面用了强制转换为int.在函数调用方面.因为子函数中要求到输入为指针...应该注意赋值类型匹配....以上就是关于C语言指针赋值问题,想必都已有了一定了解,更多关于C语言内容请继续关注武林技术频道。

1.6K10

C语言数组多种赋值方式

摘要:声明,赋值,连续赋值,memcpy,memset,拼接 前一篇文章已经讲述了动态数组定义与使用,由于项目大部分运算为矩阵运算,所以用到数组地方会相对较多,这里再介绍一下数组一些常用运算方法...首先是数组声明,数组在声明时候可以连续进行赋值,即一次进行多个数组元素赋值,但进行声明后就不可以进行多元素赋值(不包括memcpy),只能对每个元素进行赋值: int a[3] = {1,2,3...,这里有两种方式,一种是对每个元素进行赋值,另一种是使用memcpy函数 每个元素进行赋值: int a[3],b[4]; int c[7]; for (int i = 0; i < 7; i++) {...if (i <3) c[i] = a [i]; else c[i] = b [i - 3]; } 使用memcpy函数,memcpy函数原型为 void...如下: int a[3],b[4]; int c[7]; memcpy(c,a,sizeof(int)*3); memcpy(c+3,b,sizeof(int)*4);

3.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言基础】结构体赋值

    结构体在 C 程序中使用较为频繁,能对数据有一定封装作用。对一个结构体赋值时,经常采用方式是,分别对其成员变量赋值。那么能否将一个结构体用赋值号(“=”)直接赋值给另一个结构体呢?...我们可以从汇编语言角度来看这个问题,测试程序: //test.c #include int main() { struct foo { int a;...x.c = NULL; y = x; return 0; } 程序定义了结构体 foo,它有3个成员变量:int 型数据 a、int 数组 b、int 指针 c,以观察是否对不同类型成员有不同处理...使用 gcc 将其编译: gcc -S -masm=intel test.c 编译时并没有报错,说明编译器接受这种赋值方式,但赋值时具体发生了什么?...因此,我们可以得出结论,结构体可以直接赋值,且赋值结果是将赋值号左边结构体中内容原原本本复制到赋值号右边结构体中,并没有共用同一块内存空间。

    2.9K70

    C语言笔记】复合赋值语句

    增加一个变量值有两种方式,如:a = a + 5和a += 5。存在两种增加一个变量值方法有何意义呢?K&R C设计者认为复合赋值符可以让程序员把代码写得更清楚些。...另外,编译器可以产生更为紧凑代码。 现在,a = a + 5和a += 5之间差别不再那么显著,而且现代编译器为这两种表达式产生优化代码并无多大问题。但是,要考虑如下两条语句: ?...在第一种形式种,由于编译器无从知道f函数是否具有副作用,所以它必须两次计算数组a下标表达式值。而在第二种形式中,下标表达式只需计算一次,所以第二种形式效率更高。...并且,从书写角度看,第一种形式下标表达式需要书写两次,而第二种形式只需书写一次。 基于这些理由,我们应该使用复合赋值语句。

    1.5K20

    C语言冒泡排序

    冒泡排序原理是:从左到右,相邻元素进行比较。通过for循环每次比较一轮,就会找到序列中最大一个或最小一个。这个数就会从序列最右边冒出来。...以从小到大排序为例,第一轮比较后,所有数中最大那个数就会浮到最右边;第二轮比较后,所有数中第二大那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。...第一轮结果是找到了序列中最大那个数,并浮到了最右边。 第二轮: 1) 21 和 80 比,21<80,则不用交换位置。...第二轮结果是找到了序列中第二大那个数,并浮到了最右边第二个位置。...因为经过前面轮次比较,已经比较过轮次已经找到该轮次中最大数并浮到右边了,所以右边数不用比较也知道是大

    2.8K90

    科学计数 C语言

    题目 科学计数是科学家用来表示很大或很小数字一种方便方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分正负号即使对正数也必定明确给出...现以科学计数格式给出实数 A,请编写程序按普通数字表示输出 A,并保证所有有效位都被保留。 输入格式: 每个输入包含 1 个测试用例,即一个以科学计数表示实数 A。...该数字存储长度不超过 9999 字节,且其指数绝对值不超过 9999。 输出格式: 对每个测试用例,在一行中按普通数字表示输出 A,并保证所有有效位都被保留,包括末尾 0。...C语言%[] %[]功能是只读入[]内字符,比如下面我代码中%[0-9]就是值只读入0到9这10个数字,碰到其他字符就停止,如果加上^这个字符,变成%[^],那就是不读入[]内字符,比如...c.%[0-9]E%c%d",&sign,&n[0],n+1,&signindex,&index); if(sign=='-') printf("-"); if(signindex=='-')

    25620

    C 语言】指针间接赋值 ( 直接赋值 和 间接赋值 | 在子函数中间接赋值 )

    文章目录 一、直接赋值 和 间接赋值 二、在子函数中间接赋值 一、直接赋值 和 间接赋值 ---- 在 函数体 内部 , 声明普通变量 , 直接赋值 : 直接修改该变量 , 称为 直接赋值 ; 简介赋值...: 将该变量地址 赋值 给指针 , 通过 指针 修改内存中变量数据 , 称为 间接赋值 ; 代码示例 : #include #include int main...a = 10; // 第二次打印 a 变量值 printf("a = %d\n", a); // 将 a 地址赋值给 指针变量 p p = &a;..."a = %d\n", a); return 0; } 执行结果 : 二、在子函数中间接赋值 ---- 在 函数体 内部 , 声明普通变量 , 如果 获取该变量地址 , 将该 地址 传递给...a = 10; // 第二次打印 a 变量值 printf("a = %d\n", a); // 将 a 地址赋值给 指针变量 p p = &a;

    3.4K10

    C语言指针初始化和赋值

    因为,在C语言里面,没有整体处理一个字符串机制 赋值: cp = “abcdefg”; *cp=”abcdefg” ;//错误!...字符串常量传递是它首地址,不可以通过*cp修改该字符串值,因为该字符串为常量,而它只是简单将指针指向该字符串常量 3、指针常量 在C语言中没有一种内建(built-in)方法去表示指针常量,...在大多数计算机中,内存地址确实是以无符号整型数来表示,而且多以16进制表示,但我们在C语言中不能用整型数去表示地址,只能用指针常量来表示,因为它是被用来赋给一个指针。...对于这个赋值问题还可以换一个角度去理解,在C语言中,使用赋值操作符时,赋值操作符左边和右边表达式类型应该是相同,如果不是,赋值操作符将试图把右边表达式值转换为左边类型。...ANSI C还定义了一个宏NULL,用来表示空指针常量。大多数C语言实现中NULL是采用后面这种方式定义:#define NULL ((void *)0)。

    2.5K10

    c语言如何利用指针间接赋值

    我们都知道,指针是指向一段内存空间。而这个内存空间也可以存放下一个内存空间地址,这样一级级传递下去,就变成了多级指针。在C语言中,多级指针是经常会用到。 多级指针像一把双刃剑,有利也有弊。...你能够用它完成一些奇淫技巧,也会遇到一些不可捉摸错误。 其中,指针有一个非常重要作用:间接赋值。...; printf("T2 %d\n",p2); //打印出地址 ,会发现和实参地址一样 } //间接赋值 //利用n级指针 改变n-1级指针值 int main(int argc,char...s=45051 C语言控制led灯 http://www.makeru.com.cn/live/1392_304.html?...s=45051 如何编写生活中C语言 http://www.makeru.com.cn/live/5413_2649.html?s=45051

    2K10

    谈谈C语言赋值运算符

    C语言中,赋值运算符很常用,常见运算符有:=、+=、-=、*=、/=。...赋值运算符能简化代码,我们要算一个数加二,完整代码可以写成 a = a + 2;如果用上了赋值运算符,则可写成 a += 2。下面将会详细介绍C语言支持所有的赋值运算符。...C语言支持所有赋值运算符,如下表所示: 运算符 解释 例子 = 简单赋值运算符 A=1相当于将1赋值给A += 加且赋值运算符 A+=1相当于A=A+1 -= 减且赋值运算符 A-=1相当于A=A...=A|2 举个栗子,展示一下C语言支持所有赋值运算符号,源代码如下: #include int main() { int a = 10; int c; c...,将会输出以下结果: c 值 = 10 c 值 = 20 c 值 = 10 c 值 = 100 c 值 = 10 c 值 = 0 c 值 = 0 c 值 = 0 c 值 = 0 c

    1.8K20

    c语言)选择排序和冒泡排序

    大家好,又见面了,我是你们朋友全栈君。 问题描述: 给定一个数组(或者输入一个数组),分别运用选择排序和冒泡排序将所要结果输出。...给定一个数组,这种思想首先假定数组首元素为最大(最小)。此时就要利用3个变量i,j,k表示元素下标。i表示当前,j表示找到最大(最小)下标,k用于存放每次循环中最大值下标。...2>.在掌握了程序基本思想之后,再进行排序。找到最大下标后赋给k。...找到之后判断所假设的当前值是否为此次循环最大值,如果不是,就交换a[k] 与当前a[i]值,从而将数组以一定顺序排放,最后写一个循环将结果输出。...2>.如果给定一个大小为n数组,那么需要比较n-1趟,每一趟比较n-1-i次 ,i 表示上次循环中已经比较完下标。

    1.2K10

    C语言 | 选择排序

    例60:C语言实现用选择对10个整数排序。...若a[2]~a[10]中有一个以上比a[1]小,则将其中最大一个,与a[1]交换,此时a[1]中存放了10个中最小数。依次类推,共进行9轮比较,a[1]~a[10]就已按由小到大顺序存放了。...个数: for(i=1;i<=10;i++)//将键盘录入10个数原样输出    {     printf("%5d",array[i]);   } 第三部分 排序逻辑: for(i=1;i<=9;i...++)   {     min=i;//把第一个数作为最小      for(j=i+1;j<=10;j++)     {        if(array[min]>array[j])//判断大小,小为...想看快速排序,归并排序各种排序点赞告诉我啦 C语言 | 选择对10个数排序 更多案例可以go公众号:C语言入门到精通

    90298

    C 语言】指针间接赋值 ( 间接赋值三要素 | 间接赋值 使用三种场景 )

    ; ② 实参地址赋值给形参 ; ③ 使用形参指针修改实参值 ; 间接赋值 3 大要素 : 要素 ① : 定义 实际变量 ( 实参 ) , 以及接收 实际变量 地址 指针参数 ( 形参 ) ; 如果...形参 指针 ; // 实际变量 地址 , 赋值给 形参指针 // 该指针变量将来用作 函数参数 p = &a; 要素 ③ : 使用 形参指针 修改 实际变量 ( 实参 ) 值 ; *p =...20; 二、间接赋值 使用场景 ---- 上述 间接赋值 3 要素 , ① 定义实参和形参 ; ② 实参地址赋值给形参 ; ③ 使用形参指针修改实参值 ; 在不同场景组合 , 产生了 3 种...int a = 0; // 声明指针变量 , 并为其设置 NULL 初始值 // NULL 就是 0 char *p = NULL; // 将 a 地址赋值给...int a = 0; // 声明指针变量 , 并为其设置 NULL 初始值 // NULL 就是 0 int *p = NULL; // 将 a 地址赋值给 指针变量

    1.9K20

    C 语言】结构体 ( 结构体变量之间赋值 )

    文章目录 一、结构体变量之间赋值 二、完整代码示例 一、结构体变量之间赋值 ---- 声明结构体变量 s1 , 同时进行初始化操作 ; // 声明结构体变量 , 同时进行初始化操作...结构体变量 s2 , 该赋值过程是将 s1 结构体变量赋值给 s2 结构体变量 , 会为 s2 每个 结构体成员 进行赋值 ; 将 s1 结构体 成员 取出 并赋值给 s2 结构体 相应成员..., s2.id); // 打印两个结构体变量地址值 , 上述赋值不是地址赋值 , 而是实际值之间进行赋值 printf("s1 address = %d, s2 address =...%d\n", &s1, &s2); // 由上面的 s2 打印结果可知 , 将 s1 结构体变量赋值给 s2 结构体变量 // 会为 s2 每个 结构体成员 进行赋值 //...将 s1 结构体 成员 取出 并赋值给 s2 结构体 相应成员 // 命令行不要退出 system("pause"); return 0; } 执行结果 : name

    2.4K20

    C 语言】指针间接赋值 ( 指针作为 函数参数 意义 | 间接赋值 代码示例 )

    文章目录 一、指针作为 函数参数 ( 间接赋值 ) 意义 二、间接赋值 代码示例 一、指针作为 函数参数 ( 间接赋值 ) 意义 ---- 调用函数时 , 调用 & 取地址 生成 实参 p , 将...指针变量 p 实参 传递给 函数形参 , 在函数中 借助传入 指针 可以 实现 与 外部函数 内存共享 , 在函数中使用 *p 修改内存值 , 可以将 运算结果通过 *p 传递出来 ; 指针 作为...函数参数 , 可以实现 主函数 与 被调用子函数 之间 内存交换 ; 下面是逻辑链 : 指针作函数参数 ( 间接赋值 ) -> 接口封装与设计 -> 模块划分 -> 软件分层 正是因为有了 间接赋值 ,...才能实现 接口封装与设计 , 进而实现了 模块划分 , 最后实现了 软件分层 ; 使用 指针 ( 一级指针 或 多级指针 ) 作为参数 , 可以更加灵活在 函数中 对 传入 指针 指向内存数据...解耦操作 , 实现了 模块化开发 ; 如果没有 指针 作为函数 , 就无法实现 功能分层 , 无法实现 模块化开发 , 就无法实现 接口 封装 与 设计 ; 二、间接赋值 代码示例 ---- 代码示例

    1.2K10

    C语言选择与冒泡排序

    自学计算机网络时候看到一张哈佛案例教学精髓图片,觉得说不错,顺便想了一下正在学习C语言,被动学习都做到位了,看课,看书,理解后做笔记等等;主动学习也做了一部分,但只做了实战演练,没有转教别人,结合我...C语言学习过程中遇到各类麻烦,写篇C语言排序文章,用我自己方式讲述,帮助不能理解朋友理解,顺便得到一些反馈帮助我自己 ?...C语言排序有很多种,目前我只学到了选择和冒泡,这两种排序主要考察就是for循环嵌套循环和数组,里面还涉及一个交换算法,本文顺序是 交换算法,选择排序,冒泡排序 交换算法 交换算法是一个非常常见算法...除了两个变量,还定义一个中间变量,首先将变量a赋值给temp,这时候就可以看作变量temp等于变量a;然后将变量b值赋给变量a,这会儿变量a就装着变量b值;然后将变量temp值即变量a赋值给变量...只到外层跳出循环,数组元素就依次装着 选择排序就是从a[0]开始依次和后面的元素进行比较,第一遍把a[0]及其以后中最小筛选出来并将值赋给a[0],第二遍把a[1]及其以后中最小筛选出来并赋值,依次类推

    2.5K20

    【编程基础】C语言复合赋值运算符

    C语言赋值中有一种特殊赋值运算符,就是复合赋值运算符。复合赋值运算符就是在赋值符“=”之前加上其它二目运算符可构成。...比如大家可能最常看到这样语句: n += 5; 这个语句相当于: n = n + 5; C语言中有如下复合赋值运算符: n += a; 相当于n = n + a; n -= a;...比如: n /= a * b + c >> d 相当于 n = n / (a * b +c >> d),右边作为一个整体加括号。...复合运算要注意以下: 复合运算符左边必须是变量; 复合运算符右边表达式计算完成后才参与复合赋值运算。复合运算符常用于某个变量自身变化,尤其当左边变量名很长时,使用复合运算符书写更方便。...复合赋值运算优先级符合C语言运算符优先级表,结合方向为从右到左。

    3.6K71

    【编程基础】C语言指针初始化和赋值

    因为,在C语言里面,没有整体处理一个字符串机制 赋值: cp = "abcdefg"; *cp=”abcdefg” ;//错误!...字符串常量传递是它首地址,不可以通过*cp修改该字符串值,因为该字符串为常量,而它只是简单将指针指向该字符串常量 3、指针常量 在C语言中没有一种内建(built-in)方法去表示指针常量,...在大多数计算机中,内存地址确实是以无符号整型数来表示,而且多以16进制表示,但我们在C语言中不能用整型数去表示地址,只能用指针常量来表示,因为它是被用来赋给一个指针。...对于这个赋值问题还可以换一个角度去理解,在C语言中,使用赋值操作符时,赋值操作符左边和右边表达式类型应该是相同,如果不是,赋值操作符将试图把右边表达式值转换为左边类型。...ANSI C还定义了一个宏NULL,用来表示空指针常量。大多数C语言实现中NULL是采用后面这种方式定义:#define NULL ((void *)0)。

    2.9K80
    领券