Faits : A. Par jugement du 17 mai 2018, le Tribunal correctionnel de l'arrondissement de la Broye et du Nord vaudois a condamné X._, pour infraction grave à la LStup, à une peine privative de liberté de 48 mois. Il a en outre ordonné son expulsion du territoire suisse pour une durée de sept ans. B. Par jugement du 30 août 2018, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a partiellement admis l'appel formé par X._ contre ce jugement et a réformé celui-ci en ce sens que le prénommé est condamné, pour infraction grave à la LStup, à une peine privative de liberté de 36 mois, son expulsion du territoire suisse étant ordonnée pour une durée de cinq ans. La cour cantonale a retenu les faits suivants. B.a. X._ est né en 1977 au Sénégal, pays dont il est ressortissant. Au terme de sa scolarité obligatoire, il a suivi une formation de couturier, achevée avec succès, avant de travailler, en Afrique, durant dix ans dans ce domaine. Il a été incorporé dans le contingent sénégalais des A._ de l'ONU et a rempli des missions au Soudan, au Liban et en Guinée Bissau. Il a quitté son pays en refusant d'aller servir en Côte d'Ivoire. X._ est venu en Europe en transitant par l'Espagne puis la France. Il est arrivé en Suisse en 2008 et y a demandé l'asile, ce qui lui a été refusé. Malgré ce refus, le prénommé est resté illégalement dans le pays. Il s'y est marié en 2013 et a eu deux enfants, nés en 2012 et 2016, de nationalité suisse. X._ était titulaire d'une autorisation de séjour, échue en mai 2018. Il a entrepris une formation de magasinier, avant de travailler, dès février 2017 et jusqu'à son interpellation en juin 2017, en qualité d'éboueur pour la commune de B._. Ensuite de l'arrestation de X._ en juin 2017, son épouse a déposé une requête de mesures protectrices de l'union conjugale. Une convention a été ratifiée en septembre 2017, la garde des enfants ayant été confiée à l'intéressée. Une demande unilatérale de divorce a par la suite été déposée par l'épouse de X._. Le casier judiciaire du prénommé fait état d'une condamnation, en 2010, pour entrée illégale et séjour illégal, de trois autres condamnations, la même année, pour séjour illégal, d'une condamnation, en 2011, pour séjour illégal et infraction à la LStup, ainsi que d'une condamnation, en 2012, pour séjour illégal et contravention à la LStup. B.b. A C._, entre l'été 2014 et le 21 juin 2017, X._ a vendu ou s'apprêtait à vendre pour le moins 837 g bruts de cocaïne, ce qui représente au minimum 234 g de cocaïne pure, ainsi qu'au moins 15 g de marijuana. C. X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 30 août 2018, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens que son expulsion du territoire suisse n'est pas ordonnée et, subsidiairement, à son annulation et au renvoi de la cause à l'autorité cantonale pour nouvelle décision. Il sollicite par ailleurs l'octroi de l'effet suspensif et le bénéfice de l'assistance judiciaire. Par courrier du 29 octobre 2018, le Président de la Cour de droit pénal a indiqué que le recours en matière pénale interjeté contre un prononcé d'expulsion déployait de lege un effet suspensif, de sorte que la demande d'effet suspensif était sans objet et qu'il n'y avait dès lors pas lieu de statuer sur celle-ci.